// ==UserScript== // @name 当页开链 // @namespace Violentmonkey Scripts // @match *://*/* // @exclude-match *://www.gamer520.com/* // @grant none // @version 5.0 // @author - // @description 2025/4/8 14:51:16 // @downloadURL none // ==/UserScript== (() => { const shouldExcludeElement = (target) => { const EXCLUDE_SELECTORS = [ '[href="javascript:;"]', '[href="javascript:"]', '.nav-content', '.views', '.presentation', '.pay-box', '[role="group"]', '#ks', '.bpx-player-ending-related-item-cover', '#qs_searchBox', '.actions', '.swiper-wrapper', '#sb_form', '.channel-info' ]; return EXCLUDE_SELECTORS.some(selector => target.closest(selector)); }; // document.addEventListener('click', function(event) { // 使用Event.composedPath()获取精确目标(2025推荐) const preciseTarget = event.composedPath()[0]; if (shouldExcludeElement(preciseTarget)) return true; // 动态节点溯源(兼容Shadow DOM) let node = preciseTarget; while (node && node.tagName !== 'A') { node = node.parentElement || node.host; // 处理Web Components场景 } // 增强型链接处理 if (node?.tagName === 'A') { // 最新安全策略(2025-04) event.stopImmediatePropagation(); // 防止其他监听器干扰 event.preventDefault(); // 异步跳转避免阻塞(2025性能优化方案) requestAnimationFrame(() => { window.location.assign(node.href); // 替代直接href赋值 }); } }, true); // window.open = u => (location = u); })();