Greasy Fork is available in English.
2025/4/8 14:51:16
当前为
// ==UserScript==
// @name 当页开链
// @namespace Violentmonkey Scripts
// @match *://*/*
// @exclude-match *://www.gamer520.com/*
// @grant none
// @version 5.0
// @author -
// @description 2025/4/8 14:51:16
// ==/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);
})();