// ==UserScript== // @name 强制页面在新标签页打开 // @namespace http://tampermonkey.net/ // @version 0.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') { menuId = GM_registerMenuCommand('关闭', close) } } //修改页面以实现链接在新标签页打开 function hookPage(){ // 获取页面上的所有链接元素 let links = document.getElementsByTagName('a'); // 遍历每个链接元素并添加目标属性 for (let i = 0; i < links.length; i++) { links[i].setAttribute('target', '_blank'); } // 保存原始的 window.open 方法的引用 let originalOpen = unsafeWindow.open; // 重写 window.open 方法 unsafeWindow.open = function(url, target, features) { // 在新标签页中打开链接 originalOpen.call(this, url, '_blank', features); }; } function init(){ whiteListManage(); } init() })();