您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
强制YouTube主页所有视频链接在新标签页打开
// ==UserScript== // @name YouTube 主页强制新标签页 // @namespace https://gtihub/txy-sky // @version 2.0 // @description 强制YouTube主页所有视频链接在新标签页打开 // @author Txy-Sky // @match https://www.youtube.com/ // @icon https://www.youtube.com/favicon.ico // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 精准识别视频链接的特征 const isVideoLink = link => { const url = new URL(link.href); return url.pathname === '/watch' && url.searchParams.has('v') && !url.searchParams.has('list') && // 排除播放列表 !link.closest('[is-shorts]'); // 排除Shorts }; // 主处理函数 const handleClick = e => { const link = e.target.closest('a'); if (link && isVideoLink(link)) { e.preventDefault(); e.stopPropagation(); window.open(link.href, '_blank'); } }; // 增强型点击监听(使用捕获阶段) document.addEventListener('click', handleClick, true); // 动态内容处理器 const processLinks = () => { document.querySelectorAll('a').forEach(link => { if (isVideoLink(link)) { link.target = '_blank'; link.removeAttribute('data-yt-params'); // 防止YouTube覆盖 } }); }; // 高性能Observer配置 const observer = new MutationObserver(mutations => { if (mutations.some(m => m.addedNodes.length)) { requestAnimationFrame(processLinks); } }); observer.observe(document.body, { childList: true, subtree: true, attributes: false, characterData: false }); // 初始处理 processLinks(); })();