// ==UserScript== // @name 清理网页标题字符 // @version 2.0 // @author ChatGPT // @description 从页面标题中删除指定的字符,脚本菜单里输入需要删除的字符 // @match *://*/* // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // @namespace https://greasyfork.org/users/452911 // @downloadURL none // ==/UserScript== (function() { 'use strict'; let filters = []; // 获取用户设置的字符过滤器 function getConfiguredFilters() { return prompt('请输入需要删除的字符(用 & 分隔)或留空不做更改:', GM_getValue('filters')) || ''; } // 将用户定义的过滤器转换为数组并保存到全局变量中 function updateFilters() { filters = getConfiguredFilters().split('&').map(filter => filter.trim()); GM_setValue('filters', filters.join('&')); cleanTitle(); } // 添加“编辑清除字符”选项到油猴脚本菜单中 function setConfiguredFilters() { updateFilters(); } // 注册“编辑清除字符”选项 GM_registerMenuCommand('清理网页标题字符 - 编辑清除字符', setConfiguredFilters); // 标题清理函数 function cleanTitle() { let originalTitle = document.title; let cleanedTitle = originalTitle; for (let i = 0; i < filters.length; i++) { cleanedTitle = cleanedTitle.replaceAll(filters[i], ''); } if (originalTitle !== cleanedTitle) { document.title = cleanedTitle; cleanTitle(); // 如果清理后仍然有匹配的字符,则继续清理。 } } // 初始化,如果有过滤器就进行标题清理 filters = GM_getValue('filters') ? GM_getValue('filters').split('&').map(filter => filter.trim()) : []; if (filters.length > 0) { cleanTitle(); } // 监听“编辑清除字符”选项,在用户保存新的过滤器时更新并执行清理 window.addEventListener('message', (event) => { if (event.source === window && event.data.type && event.data.type === 'SET_FILTERS') { updateFilters(); } }); // 在油猴脚本界面中显示当前过滤器设置 GM_registerMenuCommand('清理网页标题字符 - 当前过滤器', () => { alert(`当前过滤器: ${GM_getValue('filters') || '未设置'}`); }); })();