wx-auth/wx-h5-demo: 授权与商城跳转加 fail 兜底提示; 修环境标签恒显「纯浏览器」; 调试面板转发 navigateTo/switchTab fail (demo v26090901)

This commit is contained in:
2026-09-09 18:41:13 +08:00
parent 7577f97891
commit 138f14e6de

View File

@@ -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);
});