joywayer
|
7fe089577b
|
补齐非 console.error 类 H5 报错的观察通路
排查「H5 有输出但 Safari 看不到」时发现,即便绕开 Safari 只看 Xcode,也有三类
故障是完全静默的:
1. 资源 404(<script>/<img>/<audio> 加载失败)
error 事件只在元素自身触发且不冒泡,原先 addEventListener('error', fn) 收不到。
改为捕获阶段 (capture=true),JS 异常的 ev.target 是 window,据此在同一 listener
内分流 onerror / resourceerror 两类。缺图缺 js 是 H5 最常见的线上故障,此前零信号。
2. WebView 加载失败(didFailProvisionalNavigation / didFail)
两个 VC 的 WKNavigationDelegate 此前只实现了 didFinish。AppSchemeHandler 找不到
index.html、子游戏 zip 解压残缺时,splash 永不淡出、卡在启动图,Xcode 无任何输出。
3. WebContent 进程终止(webViewWebContentProcessDidTerminate)
canvas 游戏 JSC OOM 被系统回收时页面白屏,同样静默。
⚠️ 只 log 不自动 reload —— 自动恢复是行为变化,msext 没有,不引入。
另:H5ErrorRelay.install 增加 label 参数,输出前缀从 [H5 xxx] 变为
[H5:lobby xxx] / [H5:subGame xxx]。同时存在多个 BridgedWebView 时原先分不清
日志来自谁,也就无法反推该在 Safari「开发」菜单里选哪个条目。
无契约影响:H5 可观察行为不变,新增回调仅记录不改流程。
Debug / Release 两个配置均已编译验证。
docs/H5-Debug-Guide.md §8.1 更新能力表,新增 §8.2 已知盲区 / §8.3 设计要点。
|
2026-08-08 14:19:58 +08:00 |
|
joywayer
|
f4acccdd6c
|
H5ErrorRelay 增加 console.log/info 转发,查明 Console 空的根因
排查「Safari Web Inspector 里 H5 控制台没输出」时定位到首要原因不在原生侧:
gamehall.zip 的 js/01_SubGame/00_SubGame_Config.js 里 Game_Config.Debugger
.isDebugger 出厂为 false,把「发送数据 / 接收数据」等高频日志全挡住了;未被
挡住的 Connect:... 又在建 websocket 时就打完,挂上 Inspector 时早已过去。
调试时在 Safari 控制台运行时改 Game_Config.Debugger.isDebugger = true 即可,
不动 H5 任何文件(原则 A)。
顺带补齐原生转发能力:
- 新增 console.log / console.info 转发,仅 Debug 构建注入(#if DEBUG 编译期
摘掉那段 JS)。Release 包不为每条业务日志付 JS→Native IPC,也不把 H5 内部
输出暴露给外部审阅;已验证 Release 二进制中该 hook 字符串命中 0 次
- log/info 走裸 print 而非 diagLog:diagLog 会落盘到 Documents/diag.log,而该
sink 无轮转无上限(BridgeBus.swift:47),isDebugger 打开后 firehose 会吃光磁盘
- 参数格式化统一走 fmt(),对象改用 JSON.stringify —— 大厅业务大量 console.log(msg)
打整包,原先 String(obj) 只得到无用的 [object Object];循环引用逐级回退
- 原始 console 调用照常透传,不影响 Safari 侧同时查看
无契约影响:H5 可观察行为不变,Release 行为完全不变。
docs/H5-Debug-Guide.md 同步补 §7 Q3 根因 + 新增 §8.1 转发能力表。
|
2026-08-08 14:05:37 +08:00 |
|
 joywayerandClaude Opus 4.7
|
800497fd18
|
新增 H5-Debug-Guide:Safari Web Inspector 调试 H5 控制台的操作手册
整理大厅 / 子游戏 / 弹层三处 WKWebView 的 isInspectable 启用条件、
Mac Safari 与真机端开关、多 WebView 排查思路(Develop 菜单不刷新等
常见坑),并在 CLAUDE.md 文档索引登记。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-24 21:37:09 +08:00 |
|