您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
强制所有链接在新标签页打开
// ==UserScript== // @name 在新标签页打开链接 // @namespace https://greasyfork.org/ // @author qinxs // @version 1.0 // @description 强制所有链接在新标签页打开 // @license MIT // @include http*://*/* // // @grant none // @run-at document-end // ==/UserScript== 'use strict'; var base = document.createElement('base'); base.target = '_blank'; document.head.appendChild(base); document.body.addEventListener('mouseup', function (event) { // console.log(event); try { var ele = event.target; ele = ele.href ? ele : getRealEle(ele); // console.log(ele); if (!ele.href) return; // javascript按钮,menu、选项卡 if (ele.href.indexOf('javascript:') == 0 || checkIsMenu(ele)) { ele.target = '_self'; } } catch (e) {} function getRealEle(ele) { // a 或者 上级为body 标签 停止查找 if (!ele.parentNode || ele.parentNode.nodeName == 'BODY') return ele; var p = ele.parentNode; return p.nodeName == 'A' ? p : getRealEle(p); } function checkIsMenu(ele) { if (!ele.parentNode || ele.parentNode.nodeName == 'BODY') return false; var p = ele.parentNode; // console.log(p); var isMenu = p.nodeName == 'NAV' || /na?v|menu/.test(p.id); return isMenu ? true : checkIsMenu(p); } });