在阻止 Tampemonkey 执行特定的内联脚本标记后,Favicon 消失

Favicon disappears after preventing execution of a specific inline script tag by Tampemonkey

我在 Tampermonkey 中使用这段代码来阻止某些脚本标签的执行:

(function() {
    'use strict';
    window.stop();
    const xhr = new XMLHttpRequest();
    xhr.open('GET', window.location.href);
    xhr.onload = () => {
        var html = xhr.responseText
        .replace(/<script\b[\s\S]*?<\/script>/g, s => {
            // check if script tag should be replaced/deleted
            if (s.includes('window.location')) {
                return '';
            } else {
                return s;
            }
        });
        document.open();
        document.write(html);
        document.close();
    };
    xhr.send();
})();

代码删除所有包含字符串 'window.location'.

的脚本标签

除了我的浏览器地址栏中没有显示网站图标外,它工作得很好。我正在使用 Vivaldi 浏览器。

造成这种行为的原因是什么?

当我禁用 Tampermonkey 脚本时,图标重新出现。但是我检查过 Tampermonkey 脚本没有改变任何关于用于显示 favicon 的标签。

我通过在我的问题中的代码之后使用以下代码设置 favicon href 属性来解决它。

var favi=document.querySelector('[rel="shortcut icon"]');
favi.setAttribute("href",favi.getAttribute("href"));