Javascript 如何禁用chrome警报通知?
我需要通过分机关闭警报通知。警报函数是一个javascript内置函数,我在内容脚本中覆盖了它,如下所示,但它仍然有效 内容脚本: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
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扩展仍然不起作用,正如您所知,扩展的内容脚本在沙盒环境中运行,这与您提供的示例不同!