Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何禁用chrome警报通知?_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 如何禁用chrome警报通知?

Javascript 如何禁用chrome警报通知?,javascript,google-chrome-extension,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/h

我需要通过分机关闭警报通知。警报函数是一个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);
}

你能试试这样的吗

$(文档).ready(函数(){
window.alert=函数(){};

});

你能试试这样的吗

$(文档).ready(函数(){
window.alert=函数(){};

});

您不能在Chrome中全局关闭通知(至少,不是这样)

通过做

window.alert = function(){}
您只需关闭自己扩展的通知(=您自己的
窗口
上下文)。出于安全原因,您不能在全局范围内执行此操作(如果可能的话,请考虑恶意扩展可以执行哪些操作)

编辑:你实际上进入了内容页面;但这仍然不是你所寻求的“全球”变化。如果您仍然需要此功能,则:

扩展名的
manifest.js

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

window.alert = function(){}

你不能在Chrome中全局关闭通知(至少不是那样)

通过做

window.alert = function(){}
您只需关闭自己扩展的通知(=您自己的
窗口
上下文)。出于安全原因,您不能在全局范围内执行此操作(如果可能的话,请考虑恶意扩展可以执行哪些操作)

编辑:你实际上进入了内容页面;但这仍然不是你所寻求的“全球”变化。如果您仍然需要此功能,则:

扩展名的
manifest.js

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

window.alert = function(){}

正如Dmitry提到的,它必须被注入页面。它工作得很好,请投迪米特里的票。我刚刚为分享我的代码添加了答案。 竞争脚本:

 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);
 }

正如Dmitry提到的,它必须被注入页面。它工作得很好,请投迪米特里的票。我刚刚为分享我的代码添加了答案。 竞争脚本:

 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);
 }

您可能可以查看已经这样做的扩展的来源,比如可能的重复(请注意,已接受答案的顶部注释-似乎无法再这样做),它对我不起作用。我已经试过了,德米特里·胡多罗日科夫的答案是正确的。我只是想强调代码需要注入页面。在内容脚本的沙盒环境中运行它是不够的。(将有两个级别的注入:扩展注入内容脚本,内容脚本然后将代码注入页面。)您可能可以查看已经这样做的扩展的源代码,例如可能的重复(注意接受答案的顶部注释-似乎这不再可以做)它对我不起作用。我已经试过了,德米特里·胡多罗日科夫的答案是正确的。我只是想强调代码需要注入页面。在内容脚本的沙盒环境中运行它是不够的。(将有两个级别的注入:扩展注入内容脚本,然后内容脚本将代码注入页面。)意思不是“使用jQuery”。意思是“加载页面后尝试调用方法”。意思不是“使用jQuery”。意思是“加载页面后尝试调用方法”。@RockOnGom我已经添加了我的答案。@RockOnGom我已经添加了我的答案。我使用了你的代码,但它不起作用,我测试了,你能帮我吗?您可能需要指示文档结束,并且覆盖警报实际上有效:谢谢!但是Chrome扩展仍然不起作用,正如您所知,扩展的内容脚本在沙盒环境中运行,这与您提供的示例不同!我使用了你的代码,但不起作用,我测试了,你能帮我吗?您可能需要指示文档结束,并且覆盖警报实际上有效:谢谢!但是Chrome扩展仍然不起作用,正如您所知,扩展的内容脚本在沙盒环境中运行,这与您提供的示例不同!