我怎样才能使图标保持静态?

我怎样才能使图标保持静态?

我想防止我的 Mac 上的 Firefox 上的图标发生变化。

我想我可以用 Grease Monkey 来做这件事。

我的目标是防止 Slack 之类的程序更改 Favicon 来指示有通知。

我可以告诉网站他们必须使用与加载时相同的图标而不进行更改吗?

答案1

您可以编写使用 Javascript 的 Greasemonkey 脚本突变观察者观察图标何时发生变化,然后在注意到任何变化之前立即将其改回。

具体操作如下:

  1. 如果你还没有安装,请安装油脂猴Firefox 扩展(该问题与 Firefox 有关,但您也可以使用 Tampermonkey 扩展在 Chrome 和 Edge 上执行此操作:Chrome 链接Edge 链接

  2. 点击顶部栏中的 Greasemonkey 菜单,然后选择“新用户脚本...”(如果您使用 Tampermonkey,则按钮名为“创建新脚本...”)

  3. 单击该按钮后,会打开一个新选项卡,其中有一个大文本区域,您可以在其中编写 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://*/*所有站点)。

    底部的部分是实际的脚本,用于阻止图标更改。正如我在回答开头所解释的那样,它的作用是检测图标何时更改,并在您注意到任何变化之前快速将其更改回来。

  4. Ctrl+S保存脚本,然后就完成了。

答案2

您必须编辑与网站/Web 应用程序绑定的 Cookie,并更改允许通知的值。有 CookieCutter 等扩展程序允许您编辑 Cookie,尽管该扩展程序适用于 Safari。

相关内容