如何禁用Chrome警报通知?

时间:2016-06-03 11:53:50

标签: javascript google-chrome-extension

我需要通过我的分机关闭警报通知。警报功能是一个javascript内置函数,我在内容脚本中覆盖它如下,但它仍然有效。

内容脚本:

window.alert = function(){}

它不会将其关闭。这个问题很简单,但它不起作用,我会发疯:)

的manifest.json:

"content_scripts": [
    {
      "js": [ "assets/js/jquery-1.12.4.min.js", "assets/js/common.js", "assets/js/handlers.js" ],
      "matches": [ "http://*/*", "https://*/*" ],
      "run_at": "document_start"
    }
  ],

handler.js:

window.alert = function (msg) {
    debugger;
    console.log(msg);
}

3 个答案:

答案 0 :(得分:3)

您无法在Chrome中全局关闭通知(至少不是这样)。

通过

window.alert = function(){}

您只需关闭自己的扩展程序的通知(=您自己的window上下文)。出于安全原因,您无法全局执行此操作(如果可能的话,请考虑恶意扩展可以执行的操作)。

修改:您实际上can inject your code进入了内容页面;但这仍然不是一个全球性的"改变你寻求的。如果你仍然想要这个,那么:

manifest.js您的扩展程序:

{
    "name": "MyExtension",
    ...
    "permissions": ["tabs", "http://*/*"],
    "content_scripts" : [{
        "js" : ["script.js"]
    }]
}

您的script.js

window.alert = function(){}

答案 1 :(得分:1)

正如Dmitriy所说,它必须注入页面。它工作得很好请投票给Dimitry我刚刚添加了共享我的代码的答案。 竞争剧本:

 function override_alert() {
        window.alert = function alert(msg) {
            console.log('Hidden Alert ' + msg);
        };
    }
 if (!document.xmlVersion) {
        var script = document.createElement('script');
        script.appendChild(document.createTextNode('(' + override_alert + ')();'));
        document.documentElement.appendChild(script);
 }

答案 2 :(得分:-2)

你能尝试这样的事吗?

$(document).ready( function() { window.alert = function(){}; });