我正在为this网站撰写扩展程序。在我注入的脚本中(使用chrome.tabs.executeScript
注入),该脚本在" document_end"一切似乎工作正常,但我想删除网站"警报"提示。
我已将此代码放在已注入的脚本中,但它不起作用:
window.alert = function(msg){
console.log("bypassed");
}
还从注入的脚本中尝试了这个:
$('<script>window.alert = function (msg){}</' + 'script>').appendTo(document.body);
我甚至在后台页面尝试了这个,但这也没有:
chrome.tabs.executeScript({
code: 'window.alert=function(msg){}' //while alert("hello") works
});
我错过了什么?我已为另一个网站编写了另一个扩展程序,此方法会覆盖alert
函数。
更新:我无法从注入的脚本调用下载的网页中的本机功能,这将在从内容脚本调用时发生。但我注入的脚本是使用chrome.tabs.executeScript
答案 0 :(得分:0)
我猜您的问题出在manifest.json
文件中,您指定的文件是"run_at": "document_end"
。
在&#34; document_start&#34;的情况下,文件在来自css的任何文件之后注入,但在构造任何其他DOM或运行任何其他脚本之前。
但是,
在&#34; document_end&#34;的情况下,文件在DOM完成后立即注入,但在加载图像和帧之类的子资源之前。
引用this answer,在document_end
的情况下,由于函数已经加载,因此无法进行覆盖,因此您应该在document_start
注入javascript。