记住访问过的链接

记住网页上访问过的链接,并将其颜色设置为浅蓝色。脚本菜单支持启用/禁用脚本。

目前為 2024-09-10 提交的版本,檢視 最新版本

// ==UserScript==
// @name         记住访问过的链接
// @version      1.0
// @description  记住网页上访问过的链接,并将其颜色设置为浅蓝色。脚本菜单支持启用/禁用脚本。
// @author       ChatGPT
// @match        *://*/*
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @run-at       document-end
// @namespace https://gf.qytechs.cn/users/452911
// ==/UserScript==

(function() {
    'use strict';

    // 获取脚本的启用状态
    let isEnabled = GM_getValue('isEnabled', true);

    // 当前的菜单命令 ID,用于更新或删除
    let menuCommandId = 'toggleScriptMenuCommand';

    // 更新菜单项文本
    function updateMenu() {
        // 移除旧的菜单项
        GM_unregisterMenuCommand(menuCommandId);

        // 确保菜单项的文字反映当前脚本状态
        const menuText = isEnabled ? '禁用记住访问过的链接脚本' : '启用记住访问过的链接脚本';
        GM_registerMenuCommand(menuText, toggleScript, menuCommandId);
    }

    // 启用或禁用脚本功能的函数
    function toggleScript() {
        isEnabled = !isEnabled;
        GM_setValue('isEnabled', isEnabled);
        // 更新菜单项文本
        updateMenu();
        // 执行启用/禁用后的操作
        if (isEnabled) {
            initScript();
        } else {
            removeScript();
        }
    }

    // 初始化脚本功能
    function initScript() {
        // 从存储中获取访问过的链接集合
        const visitedLinks = new Set(GM_getValue('visitedLinks', []));

        // 调试输出
        console.log('访问过的链接:', Array.from(visitedLinks));

        // 更新链接状态的函数
        function updateLinkStatus(link) {
            // 如果链接已经访问过,则设置颜色为浅蓝色
            if (visitedLinks.has(link.href)) {
                link.style.color = '#88C6E5'; // 将已访问链接的颜色设置为浅蓝色
            } else {
                // 如果链接尚未访问过,添加点击事件处理程序
                link.addEventListener('click', () => {
                    visitedLinks.add(link.href);
                    // 更新存储中的访问过的链接集合
                    GM_setValue('visitedLinks', Array.from(visitedLinks));
                    // 调试输出
                    console.log('添加访问过的链接:', link.href);
                    // 将访问过的链接的颜色设置为浅蓝色
                    link.style.color = '#88C6E5';
                });
            }
        }

        // 为页面上的所有链接调用更新状态的函数
        document.querySelectorAll('a').forEach(updateLinkStatus);
    }

    // 移除脚本功能
    function removeScript() {
        // 移除已访问链接的样式
        document.querySelectorAll('a').forEach(link => {
            link.style.color = ''; // 恢复默认颜色
        });
    }

    // 注册(不可用)菜单项
    updateMenu();

    // 如果脚本被启用,则初始化脚本功能
    if (isEnabled) {
        initScript();
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址