refactor(桥接): goMall/goAuth 委托共享库,兼容 App 环境 (v26102601)

- 两处不再各写一份 wx.miniProgram 判定,统一由 wx-auth.js 分流
  (小程序 switchTab / App uni.switchTab;授权页 / App 消息回传)
- 旧实现保留为兜底
- 版本号两处同步 bump

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-26 19:27:56 +08:00
parent dcc8dc3b30
commit 271bff85e3
2 changed files with 15 additions and 3 deletions

View File

@@ -7,14 +7,14 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<title>兜爸心选 · 孕育陪伴</title> <title>兜爸心选 · 孕育陪伴</title>
<!-- V:26102502 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 --> <!-- V:26102601 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
<link rel="stylesheet" href="mama-box.css"> <link rel="stylesheet" href="mama-box.css">
<link rel="stylesheet" href="night.css"> <link rel="stylesheet" href="night.css">
<!-- 夜晚模式:首屏绘制前就按上次的选择加 class,避免先白后黑闪一下(开关在首页右上角 #nightBtn,逻辑见 app.js) --> <!-- 夜晚模式:首屏绘制前就按上次的选择加 class,避免先白后黑闪一下(开关在首页右上角 #nightBtn,逻辑见 app.js) -->
<script>try{if(localStorage.getItem('mmbox.night.v1')==='1'){document.documentElement.classList.add('night');document.querySelector('meta[name=theme-color]').content='#2A2340'}}catch(e){}</script> <script>try{if(localStorage.getItem('mmbox.night.v1')==='1'){document.documentElement.classList.add('night');document.querySelector('meta[name=theme-color]').content='#2A2340'}}catch(e){}</script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<!-- 共享助手:授权/跳商城/位置上报(分享卡片同步,见 docs/h5-auth-standard.md 第四节) --> <!-- 共享助手:授权/跳商城/位置上报(分享卡片同步,见 docs/h5-auth-standard.md 第四节) -->
<script src="/common/wx-auth.js?v=26101001"></script> <script src="/common/wx-auth.js?v=26102601"></script>
</head> </head>
<body> <body>
<a class="skip" href="#screens">跳到内容</a> <a class="skip" href="#screens">跳到内容</a>

View File

@@ -3,7 +3,7 @@
(function () { (function () {
'use strict'; 'use strict';
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */ /* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
var VER = '26102502'; var VER = '26102601';
const $ = (s, c) => (c || document).querySelector(s); const $ = (s, c) => (c || document).querySelector(s);
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s)); const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
@@ -5472,6 +5472,12 @@
仅在 web-view 环境生效;浏览器独立打开时 wx.miniProgram 不可用,降级为 toast。 */ 仅在 web-view 环境生效;浏览器独立打开时 wx.miniProgram 不可用,降级为 toast。 */
function goMall() { function goMall() {
haptic(); haptic();
/* 2026-10-26:统一委托共享库(小程序 wx.miniProgram / App uni.switchTab 都由它分流)。
下面的旧实现保留作兜底(极端情况下 wx-auth.js 未加载)。 */
if (window.wxAuth && window.wxAuth.goMall) {
window.wxAuth.goMall('/pages/index/mall');
return;
}
if (window.wx && window.wx.miniProgram) { if (window.wx && window.wx.miniProgram) {
/* getEnv 在纯浏览器里回调不会触发(等不到微信桥), /* getEnv 在纯浏览器里回调不会触发(等不到微信桥),
所以加一个超时兜底:800ms 没回就按「非小程序环境」提示。 */ 所以加一个超时兜底:800ms 没回就按「非小程序环境」提示。 */
@@ -5756,6 +5762,12 @@
实时跳转到授权页,避开该限制。 */ 实时跳转到授权页,避开该限制。 */
function goAuth() { function goAuth() {
haptic(); haptic();
/* 2026-10-26:统一委托共享库 —— 小程序走授权页,App 走「消息 → 宿主直接回传资料」。
旧实现保留兜底。 */
if (window.wxAuth && window.wxAuth.requestProfile) {
window.wxAuth.requestProfile();
return;
}
/* 与 goMall 同一套环境判定:wx.miniProgram 存在还要 getEnv 确认(纯浏览器里 /* 与 goMall 同一套环境判定:wx.miniProgram 存在还要 getEnv 确认(纯浏览器里
jweixin 也可能已加载,getEnv 不回调 → 800ms 超时兜底按非小程序提示) */ jweixin 也可能已加载,getEnv 不回调 → 800ms 超时兜底按非小程序提示) */
if (window.wx && window.wx.miniProgram) { if (window.wx && window.wx.miniProgram) {