From a55336984a2a15e53e7a46de07ab4cf3f64657b0 Mon Sep 17 00:00:00 2001 From: Karlcarlo Date: Tue, 8 Sep 2026 04:03:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=88=E6=9D=83=E7=A4=BA=E4=BE=8B:=20request?= =?UTF-8?q?Profile=20=E5=8A=A0=E7=8E=AF=E5=A2=83=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E4=B8=8E=E5=90=8C=E6=AC=BE=E6=8F=90=E7=A4=BA,=20=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E9=9D=A2=E6=9D=BF=E5=8A=A0=20navigateTo=20=E5=9F=8B?= =?UTF-8?q?=E7=82=B9=20(v26090801)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 12 +++++++++++- wx-auth.js | 25 ++++++++++++++++++++++--- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index c3e3c36..e7c9dd6 100644 --- a/index.html +++ b/index.html @@ -97,7 +97,7 @@ /* ============================================================ ① 页面版本号(YYMMDD + 两位序号)—— 用于排查 webview 是否缓存了旧页面 ============================================================ */ - var VER = '26090703'; + var VER = '26090801'; var verNoEl = el('verNo'); if (verNoEl) verNoEl.textContent = VER; @@ -172,6 +172,16 @@ dbg('navigator.userAgent 含 MicroMessenger: ' + (/MicroMessenger/i.test(navigator.userAgent) ? '✅ 是' : '❌ 否'), 'muted'); dbg('location.hash = ' + (location.hash || '(空)') + ' location.search = ' + (location.search || '(空)'), 'muted'); + // 给 navigateTo 打补丁:记录每一次跳转调用 + 捕获异常 + 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'); } + catch (ex) { dbgErr('navigateTo 抛异常: ' + (ex && ex.message ? ex.message : ex)); } + }; + } + // 给 postMessage 打补丁:记录每一次调用 + 捕获异常 var origPost = (window.wx && window.wx.miniProgram && window.wx.miniProgram.postMessage) ? window.wx.miniProgram.postMessage.bind(window.wx.miniProgram) : null; if (window.wx && window.wx.miniProgram) { diff --git a/wx-auth.js b/wx-auth.js index 868701d..c63c481 100644 --- a/wx-auth.js +++ b/wx-auth.js @@ -58,10 +58,29 @@ /* ④ 请求授权:navigateTo → 小程序端独立授权页(默认 pages/annex/auth/index)。 改动说明:微信 web-view 的 postMessage 非实时送达,点击时端上收不到; 改用 wx.miniProgram.navigateTo 实时跳转到授权页,避开该限制。 */ + /* ④ 请求授权:环境判定(与 goMall/mama-box 同一套): + wx.miniProgram 存在 → getEnv 确认(纯浏览器加载了 jweixin 时 getEnv + 不回调,800ms 超时兜底)→ 是小程序才 navigateTo 授权页; + 否则 toast「请在小程序中完成授权登录」。 */ requestProfile: function (authPage) { - if (!(window.wx && window.wx.miniProgram)) { this.toast('请在微信小程序中打开'); return; } - window.wx.miniProgram.navigateTo({ url: authPage || '/pages/annex/auth/index' }); - this.toast('正在打开授权页…'); + var self = this; + function nav() { + window.wx.miniProgram.navigateTo({ url: authPage || '/pages/annex/auth/index' }); + self.toast('正在打开授权页…'); + } + if (window.wx && window.wx.miniProgram) { + var responded = false; + window.wx.miniProgram.getEnv(function (r) { + responded = true; + if (r && r.miniprogram) nav(); + else self.toast('请在小程序中完成授权登录'); + }); + setTimeout(function () { + if (!responded) self.toast('请在小程序中完成授权登录'); + }, 800); + } else { + this.toast('请在小程序中完成授权登录'); + } }, /* ⑤ 跳小程序商城(tabBar 页用 switchTab;非 tabBar 用 navigateTo) */ goMall: function (url) {