您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
クリック済みリンクを記録し、視覚的に分かるように表示
当前为
- // ==UserScript==
- // @name Link Click Tracker
- // @namespace http://tampermonkey.net/
- // @version 1.2
- // @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.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或关注我们的公众号极客氢云获取最新地址