我需要通过我的分机关闭警报通知。警报功能是一个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);
}
答案 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(){};
});