From dee7bf0d62b86b8575998f1ca4ed6ec6d235e269 Mon Sep 17 00:00:00 2001 From: zjwmiao <1723168479@qq.com> Date: Thu, 27 Mar 2025 16:17:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8B=92=E7=BB=9Dcookie=E5=90=8E?= =?UTF-8?q?=E6=B8=85=E9=99=A4=E7=99=BE=E5=BA=A6=E7=BB=9F=E8=AE=A1=E8=B5=84?= =?UTF-8?q?=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CookieNotice.vue | 4 +++- src/shared/analytics.ts | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/components/CookieNotice.vue b/src/components/CookieNotice.vue index 1d758f7..af431bb 100644 --- a/src/components/CookieNotice.vue +++ b/src/components/CookieNotice.vue @@ -12,7 +12,7 @@ import { useI18n } from 'vue-i18n'; // import IconClose from '~icons/app/icon-close.svg'; import { useRoute, useRouter } from 'vue-router'; -import { enableOA } from '@/shared/analytics'; +import { enableOA, removeHM } from '@/shared/analytics'; import { disableOA } from '@/shared/analytics'; import IconClose from './IconClose.vue'; @@ -77,6 +77,7 @@ onMounted(() => { enableOA(router); } else { disableOA(); + removeHM(); } }); @@ -108,6 +109,7 @@ const rejectAll = () => { ); toggleNoticeVisible(false); disableOA(); + removeHM(); }; const handleSave = () => { diff --git a/src/shared/analytics.ts b/src/shared/analytics.ts index e7ee566..6b55363 100644 --- a/src/shared/analytics.ts +++ b/src/shared/analytics.ts @@ -6,6 +6,7 @@ import { import { reportAnalytics } from '@/api/api-analytics'; import { Router } from 'vue-router'; import { COOKIE_AGREED_STATUS, useCookieStore } from '@/stores/cookies'; +import { removeCookie } from './utils'; export const oa = new OpenAnalytics({ appKey: 'openEuler', @@ -14,6 +15,7 @@ export const oa = new OpenAnalytics({ useCookieStore().getUserCookieStatus() !== COOKIE_AGREED_STATUS.ALL_AGREED ) { disableOA(); + removeHM(); return; } reportAnalytics(data); @@ -62,6 +64,29 @@ export const disableOA = () => { }); }; +export const removeHM = () => { + const hm = /^hm/i; + document.cookie + .split(';') + .map((c) => c.trim()) + .forEach((c) => { + const key = decodeURIComponent(c.split('=')[0]); + if (hm.test(key)) { + removeCookie(key); + } + }); + [sessionStorage, localStorage].forEach((storage) => { + const keys = []; + for (let i = 0; i < storage.length; i++) { + const key = storage.key(i)!; + if (hm.test(key)) { + keys.push(key); + } + } + keys.forEach(key => storage.removeItem(key)); + }); +} + export const reportPV = ($referrer?: string) => { oaReport(OpenEventKeys.PV, $referrer ? { $referrer } : undefined); }; -- Gitee