您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
将NODESEEK页面中的跳转链接直接替换为目标链接,跳过跳转提示
// ==UserScript== // @name NODESEEK链接直达 // @namespace https://www.nodeseek.com/space/33015 // @version 2.0 // @description 将NODESEEK页面中的跳转链接直接替换为目标链接,跳过跳转提示 // @author You // @match https://www.nodeseek.com/* // @match http://www.nodeseek.com/* // @license MIT // @grant none // @run-at document-end // ==/UserScript== (function() { 'use strict'; console.log('NODESEEK链接直达脚本已加载'); // 处理单个链接 function processLink(link) { const href = link.href; // 检查是否是跳转链接 if (href && href.includes('/jump?to=')) { try { // 创建URL对象来解析参数 const url = new URL(href); const targetUrl = url.searchParams.get('to'); if (targetUrl) { // 解码目标URL const decodedUrl = decodeURIComponent(targetUrl); // 替换链接地址 link.href = decodedUrl; // 添加视觉标识(可选) if (!link.hasAttribute('data-direct-link')) { link.setAttribute('data-direct-link', 'true'); link.style.borderLeft = '3px solid #4CAF50'; link.style.paddingLeft = '5px'; link.title = `直达链接: ${decodedUrl}`; } console.log('已处理链接:', href, '->', decodedUrl); return true; } } catch (error) { console.error('处理链接出错:', error, href); } } return false; } // 处理页面中的所有链接 function processAllLinks() { const links = document.querySelectorAll('a[href*="/jump?to="]'); let processedCount = 0; links.forEach(link => { if (processLink(link)) { processedCount++; } }); if (processedCount > 0) { console.log(`已处理 ${processedCount} 个跳转链接`); } return processedCount; } // 初始处理 function init() { // 等待页面加载完成 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', processAllLinks); } else { processAllLinks(); } // 监听页面变化,处理动态加载的链接 const observer = new MutationObserver(function(mutations) { let shouldProcess = false; mutations.forEach(function(mutation) { // 检查是否有新增的节点 if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { for (let node of mutation.addedNodes) { if (node.nodeType === Node.ELEMENT_NODE) { // 检查新增节点是否包含跳转链接 if (node.tagName === 'A' && node.href && node.href.includes('/jump?to=')) { processLink(node); } else if (node.querySelector) { // 检查新增节点内部是否有跳转链接 const innerLinks = node.querySelectorAll('a[href*="/jump?to="]'); if (innerLinks.length > 0) { shouldProcess = true; } } } } } }); if (shouldProcess) { setTimeout(processAllLinks, 100); // 延迟处理,避免频繁执行 } }); // 开始监听 observer.observe(document.body, { childList: true, subtree: true }); } // 启动脚本 init(); })();