fix(身份): 宿主未注入 openid 时给出可见提示 + jumpApp 带 __no_identity 标记 (v26092008)
背景(2026-09-20 线上排查):小程序首页壳拿不到 openid 时会**匿名加载**本页,
页面照常渲染但全是占位(孕周 `--`、档案查不到),而跳应用时 jumpApp 因为没有身份
就跳**裸 URL** —— 从商城返回首页加载本页时很容易被误判成「数据丢了」。
根因在小程序侧(App.vue 丢掉无 token 分支的 openid;首页壳没有像 web_view 那样的
silenceAuthNoLogin 兜底),H5 这侧先做**可见 + 可观测**两件缓解:
· 新增顶部提示条(#idNotice):仅在没有 openid 时显示,文案「未获取到微信身份,
页面数据可能不完整」;带「重试」按钮(location.replace 换 URL 重载,重试过一次后
文案升级为「请退出小程序后重新进入」,状态落 sessionStorage,活过那次跳转)。
有身份加载时(applyRemoteProfile 拿到 openid)自动隐藏。
⚠️ 刻意不做自动轮询/自动 reload:宿主只在它自己重设 web-view src 或 onShow 时注入身份,
页面自己刷同一 URL 并不会让身份出现,反而可能循环。
· jumpApp():一个身份都没有时显式带 `__no_identity=1` —— 目标应用能区分「宿主没注入身份」
与「参数被平台丢了」,nginx/后端日志里也能一眼查到(排查 openid 为空的关键指纹)。
验证(本地代理 + 浏览器):访客态提示可见且默认文案正确;有 openid 时隐藏;
点重试后 URL 变 `?t=…`、提示仍在且文案升级;点宫格:无身份 → `…/?__no_identity=1`,
有身份 → `?openid=…&unionid=…`(无标记);卡片/红点/资源库 8 份/弹窗/我的页/tab 顺序
全部回归正常,errors 与 console 为空。
This commit is contained in:
13
index.html
13
index.html
@@ -7,7 +7,7 @@
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>兜爸心选 · 孕育陪伴</title>
|
||||
<!-- V:26092007 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<!-- V:26092008 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<link rel="stylesheet" href="mama-box.css">
|
||||
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
|
||||
<!-- 共享助手:授权/跳商城/位置上报(分享卡片同步,见 docs/h5-auth-standard.md 第四节) -->
|
||||
@@ -16,6 +16,17 @@
|
||||
<body>
|
||||
<a class="skip" href="#screens">跳到内容</a>
|
||||
<div class="phone" id="phone">
|
||||
<!-- 身份未就绪提示(2026-09-20 新增)
|
||||
⚠️ 数据源是「宿主有没有把 openid 注入进来」,由 app.js 的 showIdNotice()/hideIdNotice() 控制。
|
||||
背景:小程序首页壳在拿不到 openid 时会**匿名加载**本页(见 js/app.js 的访客态分支),
|
||||
此时页面看着能用、其实全是占位(孕周 `--`、查不到任何档案)。以前是静默的,
|
||||
用户/测试者看不出异常 —— 从商城返回首页加载本页时尤其容易被误判成「数据丢了」。
|
||||
所以这里给一条**可见**的提示,并提供重试;排查时也能一眼看出是身份问题而不是数据问题。 -->
|
||||
<div class="id-notice hide" id="idNotice" role="status">
|
||||
<span class="idn-ico" aria-hidden="true">!</span>
|
||||
<span class="idn-txt" id="idNoticeTxt">未获取到微信身份,页面数据可能不完整</span>
|
||||
<button class="idn-retry" id="idNoticeRetry">重试</button>
|
||||
</div>
|
||||
<nav class="tabbar" id="tabbar">
|
||||
<button class="tab is-active" data-tab="home">
|
||||
<span class="t-ico ic-home"></span><span class="t-txt">首页</span>
|
||||
|
||||
Reference in New Issue
Block a user