在阻止 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"));
我在 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"));