您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
クリック済みリンクを記録し、視覚的に分かるように表示
// ==UserScript== // @name Link Click Tracker // @namespace http://tampermonkey.net/ // @version 1.3 // @description クリック済みリンクを記録し、視覚的に分かるように表示 // @author Your Name // @match *://*/* // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; // ハッシュ値を計算する関数 (SHA-256 + 先頭8文字) async function computeHash(link) { const encoder = new TextEncoder(); const data = encoder.encode(link); const hashBuffer = await crypto.subtle.digest("SHA-256", data); const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, "0")).join(""); return hashHex.substring(0, 8); } // リンクにチェックマークを追加する関数 function addCheckmark(link) { // リンク内にimgタグが含まれていない場合のみチェックマークを追加 if (!link.textContent.includes('✅') && !link.querySelector("img")) { link.textContent = "✅ " + link.textContent; // テキストの先頭にチェックマークを追加 } } // ページ内のすべてのリンクをチェック async function checkLinks() { const visitedLinks = JSON.parse(localStorage.getItem("visitedLinks")) || {}; const links = document.querySelectorAll("a[href]"); for (const link of links) { const href = link.href; // ハッシュ値を計算して確認 const hash = await computeHash(href); if (visitedLinks[hash]) { addCheckmark(link); } // クリックイベントを追加 link.addEventListener("click", async () => { const clickHash = await computeHash(href); visitedLinks[clickHash] = true; localStorage.setItem("visitedLinks", JSON.stringify(visitedLinks)); checkLinks(); }); } } // ページロード時にリンクをチェック checkLinks(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址