From a86378601a04b85bd38415a64894bb6c07dfd2fa Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 9 Jun 2023 15:58:30 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content_script.js | 47 ++++++++++++++++--- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/apps/terminal/applets/chrome/extensions/disable_new_tab_window_menu/content_script.js b/apps/terminal/applets/chrome/extensions/disable_new_tab_window_menu/content_script.js index d1a6bf8ea..b09cb7531 100644 --- a/apps/terminal/applets/chrome/extensions/disable_new_tab_window_menu/content_script.js +++ b/apps/terminal/applets/chrome/extensions/disable_new_tab_window_menu/content_script.js @@ -1,13 +1,31 @@ // content_script.js -// 获取所有的 标签元素 -const links = document.getElementsByTagName('a'); +// 创建一个 Mutation Observer 实例 +const observer = new MutationObserver(function (mutationsList) { + // 遍历每个发生变化的 mutation + for (let mutation of mutationsList) { + // 检查是否有节点添加 + if (mutation.type === 'childList') { + // 获取所有的 标签元素 + const links = document.getElementsByTagName('a'); -// 遍历 标签元素并修改链接属性 -for (let i = 0; i < links.length; i++) { - links[i].target = '_self'; // 将 target 属性设置为 _self,当前窗口打开 -} + // 遍历 标签元素并修改链接属性 + console.log("开始替换标签") + for (let i = 0; i < links.length; i++) { + links[i].target = '_self'; // 将 target 属性设置为 _self,当前窗口打开 + } + // 停止监听,已经完成替换操作 + observer.disconnect(); + + // 退出循环,不再处理后续的 mutations + break; + } + } +}); + +// 开始观察 document.body 的子节点变化 +observer.observe(document.body, {childList: true, subtree: true}); chrome.runtime.onMessage.addListener( function (request, sender, sendResponse) { @@ -18,7 +36,7 @@ chrome.runtime.onMessage.addListener( ) document.addEventListener("contextmenu", function (event) { - console.log('On contextmenu event') + console.log('On context') event.preventDefault(); }); @@ -31,6 +49,21 @@ window.addEventListener("keydown", function (e) { } }, true); +// 保存原始的 window.open 函数引用 +var originalOpen = window.open; + +// 修改 window.open 函数 +window.open = function (url, target, features) { + // 将 target 强制设置为 "_self",使得新页面在当前标签页中打开 + target = "_self"; + + // 修改当前页面的 URL + location.href = url; + + // 调用原始的 window.open 函数 + return originalOpen.call(this, url, target, features); +}; + chrome.runtime.sendMessage({greeting: "hello"}, function (response) { });