Greasy Fork is available in English.
所有链接强制后台打开,兼容Firefox和Chrome
当前为
// ==UserScript==
// @name 强制后台打开所有链接
// @namespace http://greasyfork.icu/
// @version 1.0
// @license MIT
// @description 所有链接强制后台打开,兼容Firefox和Chrome
// @author pugfly
// @match *://*/*
// @grant GM_openInTab
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
// 1. 拦截所有左键点击事件
document.addEventListener('click', function(event) {
let target = event.target;
while (target && target.tagName !== 'A') {
target = target.parentElement;
}
if (target && target.tagName === 'A' && target.href) {
event.preventDefault();
// 使用 Tampermonkey 的 API 后台打开链接
GM_openInTab(target.href, { active: false });
}
});
// 2. 拦截中键点击事件(防止中键点击导致前台打开)
document.addEventListener('auxclick', function(event) {
if (event.button === 1) { // 中键点击
let target = event.target;
while (target && target.tagName !== 'A') {
target = target.parentElement;
}
if (target && target.tagName === 'A' && target.href) {
event.preventDefault();
GM_openInTab(target.href, { active: false });
}
}
});
// 3. 强制修改所有链接的默认行为
const observer = new MutationObserver(() => {
document.querySelectorAll('a[href]').forEach(link => {
link.addEventListener('click', event => event.preventDefault());
link.setAttribute('target', '_blank');
});
});
observer.observe(document, { subtree: true, childList: true });
})();