您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
把礙眼的東西掃掉,允許使用者自己新增元素選擇器(推薦搭配調整頁面顯示的腳本)
- // ==UserScript==
- // @name getOutMyWay
- // @name:en Get Out My Way
- // @name:ja 邪魔なものを取り除く
- // @name:ko 거슬리는 것들을 없애기
- // @name:de Aus dem Weg räumen
- // @description 把礙眼的東西掃掉,允許使用者自己新增元素選擇器(推薦搭配調整頁面顯示的腳本)
- // @description:en Remove annoying elements, allowing users to add their own element selectors (recommended to use with scripts that adjust page display)
- // @description:ja 目障りなものを取り除き、ユーザーが自分の要素セレクタを追加できるようにする(ページ表示を調整するスクリプトと併用推奨)
- // @description:ko 거슬리는 요소를 제거하고 사용자가 자신의 요소 선택기를 추가할 수 있도록 합니다(페이지 표시를 조정하는 스크립트와 함께 사용하는 것을 권장합니다)
- // @description:de Entfernt störende Elemente und ermöglicht es Benutzern, ihre eigenen Elementselektoren hinzuzufügen (empfohlen für die Verwendung mit Skripten, die die Seitendarstellung anpassen)
- // @namespace https://github.com/Max46656
- // @match *://*/*
- // @version 1.1.0
- // @author Max
- // @icon https://cdn-icons-png.flaticon.com/512/867/867787.png
- // @grant GM_registerMenuCommand
- // @grant GM.getValue
- // @grant GM.setValue
- // @grant GM.deleteValue
- // @license MPL2.0
- // ==/UserScript==
- class ElementHider {
- constructor(selectors) {
- this.selectors = selectors;
- }
- hideElements() {
- this.selectors.forEach(selector => {
- const elements = document.querySelectorAll(selector);
- elements.forEach(element => {
- element.style.display = 'none';
- });
- });
- }
- }
- class DomainStrategy {
- constructor() {
- this.regexSelectorsMap = {};
- }
- async loadSelectors() {
- this.regexSelectorsMap = await GM.getValue('regexSelectorsMap', {});
- }
- async saveSelectors() {
- await GM.setValue('regexSelectorsMap', this.regexSelectorsMap);
- }
- getSelectorsForUrl(url) {
- for (const [regexStr, selectors] of Object.entries(this.regexSelectorsMap)) {
- const regex = new RegExp(regexStr);
- if (regex.test(url)) {
- return selectors;
- }
- }
- return [];
- }
- addSelectorToRegex(regexStr, selector) {
- if (!this.regexSelectorsMap[regexStr]) {
- this.regexSelectorsMap[regexStr] = [];
- }
- this.regexSelectorsMap[regexStr].push(selector);
- this.saveSelectors();
- }
- removeSelectorFromRegex(regexStr, selector) {
- if (this.regexSelectorsMap[regexStr]) {
- this.regexSelectorsMap[regexStr] = this.regexSelectorsMap[regexStr].filter(item => item !== selector);
- if (this.regexSelectorsMap[regexStr].length === 0) {
- delete this.regexSelectorsMap[regexStr];
- }
- this.saveSelectors();
- }
- }
- getAllRegexes() {
- return Object.keys(this.regexSelectorsMap);
- }
- }
- class MenuManager {
- constructor(strategy) {
- this.strategy = strategy;
- this.initMenu();
- }
- getMenuLabels() {
- const userLang = navigator.language || navigator.userLanguage;
- const labels = {
- 'zh-TW': {
- viewAndAdd: '檢視並新增選擇器',
- viewAndRemove: '檢視並刪除選擇器',
- showAllRegexes: '顯示所有正則表達式',
- enterRegex: '輸入正則表達式:',
- currentSelectors: '當前選擇器:',
- enterNewSelector: '輸入新的選擇器:',
- enterSelectorToDelete: '輸入要刪除的選擇器:',
- savedRegexes: '已儲存的正則表達式:',
- enterRegexToView: '輸入要檢視的正則表達式:'
- },
- 'en': {
- viewAndAdd: 'View and Add Selectors',
- viewAndRemove: 'View and Remove Selectors',
- showAllRegexes: 'Show All Regexes',
- enterRegex: 'Enter the regex:',
- currentSelectors: 'Current selectors:',
- enterNewSelector: 'Enter the new selector:',
- enterSelectorToDelete: 'Enter the selector to delete:',
- savedRegexes: 'Saved regexes:',
- enterRegexToView: 'Enter the regex to view:'
- },
- 'ja': {
- viewAndAdd: 'セレクターを表示して追加',
- viewAndRemove: 'セレクターを表示して削除',
- showAllRegexes: 'すべての正則表現を表示',
- enterRegex: '正則表現を入力してください:',
- currentSelectors: '現在のセレクター:',
- enterNewSelector: '新しいセレクターを入力してください:',
- enterSelectorToDelete: '削除するセレクターを入力してください:',
- savedRegexes: '保存された正則表現:',
- enterRegexToView: '表示する正則表現を入力してください:'
- }
- };
- // 回傳對應語言的選單文字,若使用者的語言不在支援列表中,回傳英文
- return labels[userLang] || labels['en'];
- }
- async initMenu() {
- await this.strategy.loadSelectors();
- const labels = this.getMenuLabels();
- GM_registerMenuCommand(labels.viewAndAdd, this.viewAndAddSelectors.bind(this));
- GM_registerMenuCommand(labels.viewAndRemove, this.viewAndDeleteSelectors.bind(this));
- GM_registerMenuCommand(labels.showAllRegexes, this.showAllRegexes.bind(this));
- }
- async viewAndAddSelectors() {
- const labels = this.getMenuLabels();
- const regexStr = prompt(labels.enterRegex, window.location.hostname + "/*");
- if (regexStr) {
- const currentSelectors = this.strategy.getSelectorsForUrl(regexStr);
- alert(`${labels.currentSelectors}\n${currentSelectors.join('\n')}`);
- const newSelector = prompt(labels.enterNewSelector);
- if (newSelector) {
- this.strategy.addSelectorToRegex(regexStr, newSelector);
- alert(`Added selector: ${newSelector}`);
- }
- }
- }
- async viewAndDeleteSelectors() {
- const labels = this.getMenuLabels();
- const regexStr = prompt(labels.enterRegex, window.location.hostname + "/*");
- if (regexStr) {
- const currentSelectors = this.strategy.getSelectorsForUrl(regexStr);
- alert(`${labels.currentSelectors}\n${currentSelectors.join('\n')}`);
- const selectorToDelete = prompt(labels.enterSelectorToDelete);
- if (selectorToDelete) {
- this.strategy.removeSelectorFromRegex(regexStr, selectorToDelete);
- alert(`Deleted selector: ${selectorToDelete}`);
- }
- }
- }
- async showAllRegexes() {
- const labels = this.getMenuLabels();
- const allRegexes = this.strategy.getAllRegexes();
- const regexStr = prompt(`${labels.savedRegexes}\n${allRegexes.join('\n')}\n\n${labels.enterRegexToView}`);
- if (regexStr) {
- const selectors = this.strategy.getSelectorsForUrl(regexStr);
- alert(`Selectors for regex ${regexStr}:\n${selectors.join('\n')}`);
- }
- }
- }
- async function main() {
- const strategy = new DomainStrategy();
- await strategy.loadSelectors();
- const currentUrl = window.location.href;
- const selectors = strategy.getSelectorsForUrl(currentUrl);
- if (selectors.length > 0) {
- const hider = new ElementHider(selectors);
- hider.hideElements();
- }
- new MenuManager(strategy);
- }
- main();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址