您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
强制链接在新标签页打开,脚本采用白名单的模式,在油猴自带的菜单里面控制开关
当前为
// ==UserScript== // @name 强制页面在新标签页打开 // @namespace http://tampermonkey.net/ // @version 0.1.3 // @description 强制链接在新标签页打开,脚本采用白名单的模式,在油猴自带的菜单里面控制开关 // @author You // @match http://*/* // @match https://*/* // @icon https://www.google.com/s2/favicons?sz=64&domain=openai.com // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant unsafeWindow // @license MIT // ==/UserScript== (function () { "use strict"; //网页白名单管理 function whiteListManage() { let menuId; //开启 function open() { GM_unregisterMenuCommand(menuId); hookPageWhenDomChange(); hookPage(); localStorage.setItem("whiteList_a5c9f2b1", "true"); GM_registerMenuCommand("关闭", function () { close(); }); } //关闭 function close() { GM_unregisterMenuCommand(menuId); localStorage.setItem("whiteList_a5c9f2b1", "false"); location.reload(); } let whiteList = localStorage.getItem("whiteList_a5c9f2b1"); if (!whiteList || whiteList === "false") { menuId = GM_registerMenuCommand("开启", open); } else if (whiteList === "true") { hookPageWhenDomChange(); hookPage(); menuId = GM_registerMenuCommand("关闭", close); } } //修改页面以实现链接在新标签页打开 function hookPage() { hookWindowOpen(); hookATag(); } function hookATag() { // 获取页面上的所有链接元素 let links = document.getElementsByTagName("a"); for (let i = 0; i < links.length; i++) { // 遍历每个链接元素并添加目标属性 links[i].setAttribute("target", "_blank"); //给标签添加点击事件,点击后标红 links[i].addEventListener("click", function () { this.style.color = "darkred"; }); } } function hookWindowOpen() { // 保存原始的 window.open 方法的引用 let originalOpen = unsafeWindow.open; // 重写 window.open 方法 unsafeWindow.open = function (url, target, features) { // 在新标签页中打开链接 originalOpen.call(this, url, "_blank", features); }; } //监听dom节点变化以应对异步刷新的场景,一旦dom节点发生变化则重新执行hookPage function hookPageWhenDomChange() { let MutationObserver = window.MutationObserver || window.WebKitMutationObserver; let observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { hookATag(); }); }); observer.observe(document.body, { childList: true, // 观察目标子节点的变化,是否有添加或者删除 subtree: true, // 观察后代节点,默认为 false attributes: false, // 观察属性变动 }); } function init() { whiteListManage(); } init(); })();