我想防止我的 Mac 上的 Firefox 上的图标发生变化。
我想我可以用 Grease Monkey 来做这件事。
我的目标是防止 Slack 之类的程序更改 Favicon 来指示有通知。
我可以告诉网站他们必须使用与加载时相同的图标而不进行更改吗?
答案1
您可以编写使用 Javascript 的 Greasemonkey 脚本突变观察者观察图标何时发生变化,然后在注意到任何变化之前立即将其改回。
具体操作如下:
如果你还没有安装,请安装油脂猴Firefox 扩展(该问题与 Firefox 有关,但您也可以使用 Tampermonkey 扩展在 Chrome 和 Edge 上执行此操作:Chrome 链接,Edge 链接)
点击顶部栏中的 Greasemonkey 菜单,然后选择“新用户脚本...”(如果您使用 Tampermonkey,则按钮名为“创建新脚本...”)
单击该按钮后,会打开一个新选项卡,其中有一个大文本区域,您可以在其中编写 Javascript 代码。文本区域中可能已经有一些代码。只需删除该代码并将其替换为以下内容:
// ==UserScript== // @name Do not change the favicon // @namespace http://tampermonkey.net/ // @version 0.1 // @description Prevents sites from changing the favicon // @author You // @match http://*/* // @match https://*/* // @grant none // ==/UserScript== (function() { 'use strict'; //Initialize some variables var favicon = document.querySelector("link[rel='shortcut icon']"); const initialIcon = favicon.href; //Define the function to run when the favicon changes var observer = new MutationObserver(function(){ if(favicon.href != initialIcon){ favicon.href = initialIcon; //Change the favicon back directly when it changes before you notice anything } }); //Run the function above whenever the favicon changes observer.observe(favicon, {attributes: true}); })();
顶部以
//
定义脚本属性开头的行。@name
定义脚本的名称,并@match
定义应在哪些站点运行该脚本(http://*/*
意味着https://*/*
所有站点)。底部的部分是实际的脚本,用于阻止图标更改。正如我在回答开头所解释的那样,它的作用是检测图标何时更改,并在您注意到任何变化之前快速将其更改回来。
按Ctrl+S保存脚本,然后就完成了。
答案2
您必须编辑与网站/Web 应用程序绑定的 Cookie,并更改允许通知的值。有 CookieCutter 等扩展程序允许您编辑 Cookie,尽管该扩展程序适用于 Safari。