无法替换注入脚本

时间:2016-04-15 13:52:20

标签: google-chrome-extension

我正在为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

加载的

1 个答案:

答案 0 :(得分:0)

我猜您的问题出在manifest.json文件中,您指定的文件是"run_at": "document_end"

来自documentation

  

在&#34; document_start&#34;的情况下,文件在来自css的任何文件之后注入,但在构造任何其他DOM或运行任何其他脚本之前。

但是,

  

在&#34; document_end&#34;的情况下,文件在DOM完成后立即注入,但在加载图像和帧之类的子资源之前。

引用this answer,在document_end的情况下,由于函数已经加载,因此无法进行覆盖,因此您应该在document_start注入javascript。