强制所有链接在新标签页打开
// ==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);
}
});