您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
使linux.do网站的主页和搜索页的帖子链接在新标签页中打开
// ==UserScript== // @name Linux.do 新标签页打开 // @namespace http://tampermonkey.net/ // @version 0.6 // @description 使linux.do网站的主页和搜索页的帖子链接在新标签页中打开 // @author BIGFA // @match https://linux.do/* // @grant none // @run-at document-start // @license GPL-3.0 // @icon data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj48cGF0aCBkPSJNMjAgM0g0QzMuNDQ3NzIgMyAzIDMuNDQ3NzIgMyA0VjIwQzMgMjAuNTUyMyAzLjQ0NzcyIDIxIDQgMjFIMjBDMjAuNTUyMyAyMSAyMSAyMC41NTIzIDIxIDIwVjRDMjEgMy40NDc3MiAyMC41NTIzIDMgMjAgM1pNNSAxOVY1SDE5VjE5SDVaTTE2IDhWMTZIMTRWMTEuNDE0Mkw4LjcwNzExIDE2LjcwNzFMNy4yOTI4OSAxNS4yOTI5TDEyLjU4NTggMTBIOFY4SDE2WiI+PC9wYXRoPjwvc3ZnPg== // ==/UserScript== (function() { 'use strict'; // 检查当前条件 function isTargetPage() { const path = window.location.pathname; return path === '/' || path === '/search' || (path.startsWith('/u/') && path.endsWith('/activity/bookmarks')) || (path.startsWith('/u/') && path.includes('/activity/topics')); } // 主函数,用于修改链接 function modifyLinks() { // 如果不是目标页面,则不执行任何操作 if (!isTargetPage()) { return; } // 选择所有帖子链接 - 更精确的选择器 const postLinks = document.querySelectorAll('a[href^="/t/"], a[href^="/d/"], a.title[href], .topic-list-item a.title, .topic-list a.title, .latest-topic-list-item a.title'); // 遍历所有链接并添加 target="_blank" 属性 postLinks.forEach(link => { // 检查链接是否包含帖子 URL 模式 if (link.href && (link.href.includes('/t/') || link.href.includes('/d/'))) { if (!link.hasAttribute('target') || link.getAttribute('target') !== '_blank') { link.setAttribute('target', '_blank'); // 添加 rel="noopener" 以提高安全性 if (!link.hasAttribute('rel') || !link.getAttribute('rel').includes('noopener')) { const currentRel = link.getAttribute('rel') || ''; link.setAttribute('rel', currentRel ? currentRel + ' noopener' : 'noopener'); } // 防止点击事件被其他处理程序拦截 link.addEventListener('click', function(e) { // 阻止默认行为和事件冒泡 e.stopPropagation(); }, true); } } }); } // 页面加载完成后执行 window.addEventListener('load', function() { modifyLinks(); // 创建一个 MutationObserver 来监视 DOM 变化,处理动态加载的内容 const observer = new MutationObserver(function(mutations) { modifyLinks(); }); // 开始观察 document.body 的所有子树变化 observer.observe(document.body, { childList: true, subtree: true }); }); // 也在 DOMContentLoaded 时执行一次 document.addEventListener('DOMContentLoaded', modifyLinks); // 定期执行以确保所有链接都被处理 setInterval(modifyLinks, 2000); })();