您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
点击链接变暗并加波浪线,标记持续到标签页关闭
// ==UserScript== // @name 标记已点击链接 // @description 点击链接变暗并加波浪线,标记持续到标签页关闭 // @version 1.0 // @author WJ // @match *://*/* // @license MIT // @grant none // @run-at document-body // @namespace https://greasyfork.org/users/914996 // ==/UserScript== (() => { 'use strict'; // 样式:变暗+波浪线 const sheet = new CSSStyleSheet(); sheet.replaceSync('a.x-marked{opacity:.7!important;text-decoration:underline wavy #0ce!important}'); document.adoptedStyleSheets.push(sheet); // 读取已标记 const marked = new Set(JSON.parse(sessionStorage.xMarked || '[]')); // 标记链接的函数 const mark = a => a.classList.toggle('x-marked', marked.has(a.href)); // 首次全扫 document.body.querySelectorAll('a[href]').forEach(mark); // 监听新节点 new MutationObserver(muts => muts.forEach(m => m.addedNodes.forEach(n => n.nodeType === 1 && (n.tagName === 'A' ? mark(n) : n.querySelectorAll?.('a[href]').forEach(mark)) ))).observe(document.body, {childList: true, subtree: true}); // 点击记录 document.addEventListener('click', e => { const a = e.target.closest('a[href]'); if (a && !a.closest(` nav,footer,aside, .btn,.nav,.navbar,.navigation,.menu,.menubar, .breadcrumb,.pagination,.tabs,.tabbar,.sidebar,.footer, [role="navigation"],[role="menu"],[role="tablist"],[role="banner"]`)){ marked.add(a.href); sessionStorage.xMarked = JSON.stringify([...marked]); a.classList.add('x-marked')} }, true); })();