Я хотел бы запретить изменение значка сайта в Firefox на моем Mac.
Думаю, я смогу сделать это с Grease Monkey.
Моя цель — не допустить, чтобы такие приложения, как Slack, меняли значок Favicon, чтобы указать на наличие уведомления.
Могу ли я указать веб-сайтам, что они должны использовать тот же самый значок, который они загрузили, не меняя его?
решение1
Вы можете написать скрипт Greasemonkey, использующий Javascriptнаблюдатель мутацийнаблюдать за изменением значка сайта и немедленно возвращать его к исходному состоянию, прежде чем вы что-либо заметите.
Вот как это сделать:
Если вы еще этого не сделали, установитеГрязная обезьянаРасширение Firefox (этот вопрос касается Firefox, но вы также можете сделать это в Chrome и Edge, используя расширение Tampermonkey):ссылка для 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}); })();
Строки сверху, начинающиеся с
//
«definite properties of the script»,@name
определяют имя скрипта и@match
определяют, на каких сайтах он должен быть запущен (http://*/*
тоhttps://*/*
есть на всех сайтах).Часть внизу — это фактический скрипт, который не дает фавикону меняться. Как я объяснил в начале своего ответа, он определяет, когда фавикон меняется, и быстро меняет его обратно, прежде чем вы что-либо заметите.
Нажмите Ctrl+, Sчтобы сохранить скрипт, и на этом все должно быть готово.
решение2
Вам придется редактировать куки, привязанные к сайту/веб-приложению, и изменить значение, которое разрешает уведомление. Существуют расширения, такие как CookieCutter, которые позволяют редактировать куки, хотя это расширение для Safari.