From 138f14e6de3934912e2dc3c77d2c8c22ad32f064 Mon Sep 17 00:00:00 2001 From: Karlcarlo Date: Wed, 9 Sep 2026 18:41:13 +0800 Subject: [PATCH] =?UTF-8?q?wx-auth/wx-h5-demo:=20=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E4=B8=8E=E5=95=86=E5=9F=8E=E8=B7=B3=E8=BD=AC=E5=8A=A0=20fail?= =?UTF-8?q?=20=E5=85=9C=E5=BA=95=E6=8F=90=E7=A4=BA;=20=E4=BF=AE=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E6=A0=87=E7=AD=BE=E6=81=92=E6=98=BE=E3=80=8C=E7=BA=AF?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E3=80=8D;=20=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E8=BD=AC=E5=8F=91=20navigateTo/switchTab=20f?= =?UTF-8?q?ail=20(demo=20v26090901)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 399fa30..920befb 100644 --- a/index.html +++ b/index.html @@ -99,7 +99,7 @@ /* ============================================================ ① 页面版本号(YYMMDD + 两位序号)—— 用于排查 webview 是否缓存了旧页面 ============================================================ */ - var VER = 26090810; + var VER = 26090901; var verNoEl = el('verNo'); if (verNoEl) verNoEl.textContent = VER; @@ -174,22 +174,43 @@ dbg('navigator.userAgent 含 MicroMessenger: ' + (/MicroMessenger/i.test(navigator.userAgent) ? '✅ 是' : '❌ 否'), 'muted'); dbg('location.hash = ' + (location.hash || '(空)') + ' location.search = ' + (location.search || '(空)'), 'muted'); - // 给 navigateTo 打补丁:记录每一次跳转调用 + 捕获异常 + // 给 navigateTo 打补丁:记录每一次跳转调用 + 捕获异常 + 转发 fail/success + // (navigateTo 跳不存在的页面 / 页面栈超 10 层时是静默失败,必须靠 fail 才能看到原因) if (window.wx && window.wx.miniProgram && window.wx.miniProgram.navigateTo) { var _nav = window.wx.miniProgram.navigateTo.bind(window.wx.miniProgram); window.wx.miniProgram.navigateTo = function (o) { - dbg('navigateTo 调用 → ' + (o && o.url), 'ok'); - try { _nav(o); dbg('navigateTo 已执行', 'ok'); } + var opt = o || {}; + dbg('navigateTo 调用 → ' + opt.url, 'ok'); + var _fail = opt.fail, _succ = opt.success; + opt.fail = function (err) { + dbgErr('navigateTo fail: ' + ((err && err.errMsg) || '未知原因')); + if (_fail) { try { _fail(err); } catch (e) {} } + }; + opt.success = function (res) { + dbg('navigateTo success', 'ok'); + if (_succ) { try { _succ(res); } catch (e) {} } + }; + try { _nav(opt); dbg('navigateTo 已调用(结果见 success/fail)', 'ok'); } catch (ex) { dbgErr('navigateTo 抛异常: ' + (ex && ex.message ? ex.message : ex)); } }; } - // 给 switchTab 打补丁:记录每一次跳转调用 + 捕获异常 + // 给 switchTab 打补丁:记录每一次跳转调用 + 捕获异常 + 转发 fail/success if (window.wx && window.wx.miniProgram && window.wx.miniProgram.switchTab) { var _st = window.wx.miniProgram.switchTab.bind(window.wx.miniProgram); window.wx.miniProgram.switchTab = function (o) { - dbg('switchTab 调用 → ' + (o && o.url), 'ok'); - try { _st(o); dbg('switchTab 已执行', 'ok'); } + var opt = o || {}; + dbg('switchTab 调用 → ' + opt.url, 'ok'); + var _fail = opt.fail, _succ = opt.success; + opt.fail = function (err) { + dbgErr('switchTab fail: ' + ((err && err.errMsg) || '未知原因')); + if (_fail) { try { _fail(err); } catch (e) {} } + }; + opt.success = function (res) { + dbg('switchTab success', 'ok'); + if (_succ) { try { _succ(res); } catch (e) {} } + }; + try { _st(opt); dbg('switchTab 已调用(结果见 success/fail)', 'ok'); } catch (ex) { dbgErr('switchTab 抛异常: ' + (ex && ex.message ? ex.message : ex)); } }; } @@ -228,6 +249,7 @@ var envTxt = a.inWebview ? '小程序 web-view' : (a.MODE === 'wechat-browser' ? '微信浏览器' : '纯浏览器'); dbg('init 回调: envTxt=' + envTxt + ' MODE=' + a.MODE + ' inWebview=' + a.inWebview, 'ok'); el('envTxt').textContent = envTxt; + show(a.inWebview ? 'ok' : 'no', envTxt); // 修:之前 show() 从未被调用,标签永远停在初始「纯浏览器」 el('envHint').style.display = a.inWebview ? 'none' : 'block'; render(a); });