From e3e63899d8d55330b8df38a46ec45d741040724d Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Fri, 10 Jul 2026 14:11:51 +0800 Subject: [PATCH] feat(privacy): add markSkipped method and H5 skip logic for privacy popup add markSkipped method to synchronously skip privacy popup, and call it in App.vue created hook for H5 environment when current URL matches skip condition --- App.vue | 10 ++++++++++ common/js/privacy.js | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/App.vue b/App.vue index ca8cf37..5d57a5f 100644 --- a/App.vue +++ b/App.vue @@ -51,6 +51,16 @@ $langReady: Promise.resolve({ ok: true, source: 'local' }) }; }, + // 同步钩子:在 page mounted 之前同步设置隐私弹窗的 skip 状态 + // 必须在 onLaunch (async) 之前跑,否则 onLaunch 第一个 await 让出事件循环时 + // privacy-popup.vue 已经挂载,会走 consumePendingShow 兜底分支把弹窗弹出来 + created() { + // #ifdef H5 + if (_shouldSkipPrivacyForCurrentUrl()) { + PrivacyManager.markSkipped() + } + // #endif + }, onLaunch: async function(options) { // ============================================================ // 主题提前加载(关键):让首屏渲染前 CSS 变量已挂上,避免闪一下 diff --git a/common/js/privacy.js b/common/js/privacy.js index b468617..8857253 100644 --- a/common/js/privacy.js +++ b/common/js/privacy.js @@ -164,6 +164,18 @@ const PrivacyManager = { return _needShow; }, + /** + * 同步标记本次跳过弹窗(不查 storage、不写 storage、不弹窗) + * 必须在 page mounted 之前调用,避免 onLaunch await 让出事件循环后 + * privacy-popup.vue 的 consumePendingShow 走兜底分支把弹窗弹出来 + * 用于 H5 浏览器直访特定 URL(子串匹配)时不让隐私弹窗挡住 + */ + markSkipped() { + _needShow = false; + _hasChecked = true; + _pendingShow = false; + }, + /** * 触发弹窗(如果需要) * 由 App.vue onLaunch 在 boot 完成后调用