Greasy Fork

强制后台打开所有链接

所有链接强制后台新建标签页打开,兼容Firefox和Chrome

目前为 2025-02-03 提交的版本。查看 最新版本

// ==UserScript==
// @name         强制后台打开所有链接
// @namespace    https://greasyfork.org/
// @version      1.1
// @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 });
})();