YouTube强制新标签页打开链接

通过模拟Ctrl+点击,让YouTube链接在新标签页中打开,同时保持原页面不变。

目前为 2024-08-11 提交的版本。查看 最新版本

// ==UserScript==
// @name         YouTube Force Link Open in New Tab
// @name:zh-CN   YouTube强制新标签页打开链接
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Opens YouTube links in new tabs by simulating Ctrl+Click, keeping the original page unchanged.
// @description:zh-CN  通过模拟Ctrl+点击,让YouTube链接在新标签页中打开,同时保持原页面不变。
// @author       YourName
// @match        *://*.youtube.com/*
// @grant        none
// @license      MIT
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    const YOUTUBE_PATTERNS = ['/watch', '/channel', '/user', '/playlist', '/shorts'];

    function isYouTubeLink(url) {
        return url.includes('youtube.com') || url.startsWith('/') || url.startsWith('https://youtu.be/');
    }

    function shouldOpenInNewTab(url) {
        return YOUTUBE_PATTERNS.some(pattern => url.includes(pattern));
    }

    function simulateCtrlClick(element) {
        const evt = new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: window,
            ctrlKey: true
        });
        element.dispatchEvent(evt);
    }

    function handleClick(event) {
        if (event.ctrlKey || event.metaKey) return;

        const anchor = event.target.closest('a');
        if (!anchor || !anchor.href) return;

        if (isYouTubeLink(anchor.href) && shouldOpenInNewTab(anchor.href)) {
            event.preventDefault();
            event.stopPropagation();
            simulateCtrlClick(anchor);
        }
    }

    document.addEventListener('click', handleClick, true);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址