您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Inject and apply thread filter to the body of any webpage
- // ==UserScript==
- // @name Apply Binarize Filter to Any Page
- // @namespace http://tampermonkey.net/
- // @version 0.2
- // @description Inject and apply thread filter to the body of any webpage
- // @author hatrd
- // @match *://*/*
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_registerMenuCommand
- // @run-at document-end
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // 获取当前滤镜反转状态
- var filterInverted = GM_getValue('filterInverted', false);
- // 创建 SVG 和 filter 元素
- var svgHtml = `
- <svg id="filterSvg" height="0" style="position:absolute; width:0; height:0">
- <filter id="normalThreshold">
- <feColorMatrix type="matrix" values="0.21 0.72 0.07 0 0
- 0.21 0.72 0.07 0 0
- 0.21 0.72 0.07 0 0
- 0 0 0 1 0" />
- <feComponentTransfer>
- <feFuncR type="discrete" tableValues="0 1" />
- <feFuncG type="discrete" tableValues="0 1" />
- <feFuncB type="discrete" tableValues="0 1" />
- </feComponentTransfer>
- </filter>
- <filter id="invertedThreshold">
- <feColorMatrix type="matrix" values="0.21 0.72 0.07 0 0
- 0.21 0.72 0.07 0 0
- 0.21 0.72 0.07 0 0
- 0 0 0 1 0" />
- <feComponentTransfer>
- <feFuncR type="discrete" tableValues="1 0" />
- <feFuncG type="discrete" tableValues="1 0" />
- <feFuncB type="discrete" tableValues="1 0" />
- </feComponentTransfer>
- </filter>
- </svg>
- `;
- // 将 SVG 插入页面中
- document.body.insertAdjacentHTML('beforeend', svgHtml);
- // 应用滤镜到 body
- applyFilter();
- // 注册菜单命令以切换滤镜反转
- GM_registerMenuCommand("Toggle Filter Inversion", function() {
- filterInverted = !filterInverted;
- GM_setValue('filterInverted', filterInverted); // 更新存储的状态
- applyFilter(); // 应用新的滤镜
- }, "t");
- function applyFilter() {
- // 根据 filterInverted 的值选择使用哪一个滤镜
- document.body.style.filter = filterInverted ? 'url(#invertedThreshold)' : 'url(#normalThreshold)';
- }
- })();