您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
所有链接都会在当前标签页中打开,而不是新的标签页或窗口,脚本菜单可以设置当前网站启用与禁用
// ==UserScript== // @name 在当前标签页中打开链接 // @version 8 // @author ChatGPT // @description 所有链接都会在当前标签页中打开,而不是新的标签页或窗口,脚本菜单可以设置当前网站启用与禁用 // @match *://*/* // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @run-at document-idle // @namespace https://greasyfork.org/users/452911 // ==/UserScript== (function() { 'use strict'; // 获取当前网站URL,并根据其生成一个唯一的存储键 var storageKey = window.location.hostname; // 根据存储键获取已保存的设置(如果存在) var isEnabled = GM_getValue(storageKey, true); function showAlert() { window.open = function(url, name, features) { window.location.href = url; } function modifyLinks() { let links = document.getElementsByTagName('a'); for (let i = 0; i < links.length; i++) { links[i].setAttribute('target', '_self'); } let base = document.getElementsByTagName('base')[0]; if (base) { base.setAttribute('target', '_self'); } else { let head = document.getElementsByTagName('head')[0]; let newBase = document.createElement('base'); newBase.setAttribute('target', '_self'); head.appendChild(newBase); } } modifyLinks(); (function() { const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.addedNodes.length > 0) { mutation.addedNodes.forEach(addedNode => { if (addedNode.nodeType === Node.ELEMENT_NODE) { modifyLinks(); } }); } }); }); const config = { childList: true, subtree: true }; observer.observe(document.body, config); })(); } // 根据保存的设置来启用或禁用弹出提示框功能 if (isEnabled) { showAlert(); } // 创建油猴菜单项,在菜单中添加“启用”和“禁用”选项 GM_registerMenuCommand(isEnabled ? '禁用强制当前标签打开' : '启用当前强制标签打开', function() { isEnabled = !isEnabled; GM_setValue(storageKey, isEnabled); if (isEnabled) { showAlert(); } }); })();