// ==UserScript== // @name 强制页面在新标签页打开 // @namespace http://tampermonkey.net/ // @version 0.1.1 // @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 // @downloadURL none // ==/UserScript== (function () { "use strict"; //网页白名单管理 function whiteListManage() { let menuId; //开启 function open() { GM_unregisterMenuCommand(menuId); hookPage(); localStorage.setItem("whiteList", "true"); GM_registerMenuCommand("关闭", function () { close(); }); } //关闭 function close() { GM_unregisterMenuCommand(menuId); localStorage.setItem("whiteList", "false"); location.reload(); } let whiteList = localStorage.getItem("whiteList"); if (!whiteList || whiteList === "false") { menuId = GM_registerMenuCommand("开启", open); } else if (whiteList === "true") { hookPage(); menuId = GM_registerMenuCommand("关闭", close); } } //修改页面以实现链接在新标签页打开 function hookPage() { // 获取页面上的所有链接元素 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"; }); } // 保存原始的 window.open 方法的引用 let originalOpen = unsafeWindow.open; // 重写 window.open 方法 unsafeWindow.open = function (url, target, features) { // 在新标签页中打开链接 originalOpen.call(this, url, "_blank", features); }; } function init() { whiteListManage(); } init(); })();