From f06a4a4df87387c7daef970231a111a3249934c2 Mon Sep 17 00:00:00 2001 From: Chi <2623135403@qq.com> Date: Mon, 6 Oct 2025 21:56:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Fix:=20=E4=BF=AE=E5=A4=8D=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E7=BB=93=E6=9E=9C=E6=97=A0=E6=B3=95=E5=9C=A8?= =?UTF-8?q?=E6=96=B0=E6=A0=87=E7=AD=BE=E9=A1=B5=E6=89=93=E5=BC=80=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BasicSettings/MenuOpenpostblank.vue | 70 +++++-------------- 1 file changed, 19 insertions(+), 51 deletions(-) diff --git a/entrypoints/SettingComponents/BasicSettings/MenuOpenpostblank.vue b/entrypoints/SettingComponents/BasicSettings/MenuOpenpostblank.vue index 637c192c..8011e25e 100644 --- a/entrypoints/SettingComponents/BasicSettings/MenuOpenpostblank.vue +++ b/entrypoints/SettingComponents/BasicSettings/MenuOpenpostblank.vue @@ -10,58 +10,26 @@ export default { props: ["modelValue", "sort"], emits: ["update:modelValue"], created() { - if (this.modelValue) { - - // 处理链接点击 - function handleLinkClick(e) { - e.preventDefault(); - e.stopPropagation(); // 阻止事件冒泡 - e.stopImmediatePropagation(); // 阻止事件捕获和后续相同事件的处理 - window.open(this.href, '_blank', 'noopener,noreferrer'); - } - - // 主要功能 - function processLinks() { - // 查找所有帖子标题链接,扩展选择器以包含搜索页面的链接 - const links = document.querySelectorAll('.link-top-line a.title:not([data-processed])'); - - links.forEach(link => { - // 标记该链接已处理 - link.setAttribute('data-processed', 'true'); - // 添加事件监听器 - link.addEventListener('click', handleLinkClick); - }); - } - - // 监听 DOM 变化,处理动态加载的内容 - const observer = new MutationObserver((mutations) => { - const hasNewLinks = mutations.some(mutation => { - return Array.from(mutation.addedNodes).some(node => { - return node.nodeType === 1 && ( - node.classList.contains('link-top-line') || - node.querySelector('.link-top-line') || - node.classList.contains('search-results') || - node.querySelector('.search-results') - ); - }); - }); - - if (hasNewLinks) { - processLinks(); + if (this.modelValue) { + function handleLinkClick(e) { + const linkSelector='.link-top-line a.title, .search-results a.search-link, .search-result-topic a.search-link' + // 检查被点击的元素或其父元素是否是要找的标签 + const link = e.target.closest(linkSelector); + + if (link && link.href) { + e.preventDefault(); + e.stopPropagation(); + e.stopImmediatePropagation(); + + window.open(link.href, '_blank', 'noopener,noreferrer'); + } } - }); - - // 开始观察 - observer.observe(document.body, { - childList: true, - subtree: true - }); - - // 初始处理 - processLinks(); - - } - }, + + // 使用事件委托,在 body 上监听一次即可,无需 MutationObserver + // 使用 { capture: true } 在捕获阶段拦截事件,确保最高优先级 + document.body.addEventListener('click', handleLinkClick, { capture: true }); + } + }, }; From 3b4a3cf8fd5a2e135a35ddf473ede68201de3eeb Mon Sep 17 00:00:00 2001 From: Chi <2623135403@qq.com> Date: Mon, 6 Oct 2025 22:16:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9linkSelector?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SettingComponents/BasicSettings/MenuOpenpostblank.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entrypoints/SettingComponents/BasicSettings/MenuOpenpostblank.vue b/entrypoints/SettingComponents/BasicSettings/MenuOpenpostblank.vue index 8011e25e..14a86ab5 100644 --- a/entrypoints/SettingComponents/BasicSettings/MenuOpenpostblank.vue +++ b/entrypoints/SettingComponents/BasicSettings/MenuOpenpostblank.vue @@ -12,7 +12,7 @@ export default { created() { if (this.modelValue) { function handleLinkClick(e) { - const linkSelector='.link-top-line a.title, .search-results a.search-link, .search-result-topic a.search-link' + const linkSelector='.link-top-line a.raw-link, .search-results a.search-link, .search-result-topic a.search-link' // 检查被点击的元素或其父元素是否是要找的标签 const link = e.target.closest(linkSelector);