Javascript 我可以阻止带有Google Chrome扩展名的alert()吗

Javascript 我可以阻止带有Google Chrome扩展名的alert()吗,javascript,google-chrome,alert,google-chrome-extension,Javascript,Google Chrome,Alert,Google Chrome Extension,我是否可以创建一个Google chrome扩展来阻止页面执行alert()?是的,alert()只是一个JavaScript方法,您可以通过执行以下操作来覆盖其功能 window.alert = function alert(msg) { console.log('Hidden Alert ' + msg); }; 只需记住在清单中的文档开始处通过清单内容脚本修改器运行该内容脚本 我相信有一个扩展就是这样做的。开发人员将其命名为nicealert。 是的,您可以,alert()只是一个J

我是否可以创建一个Google chrome扩展来阻止页面执行
alert()

是的,alert()只是一个JavaScript方法,您可以通过执行以下操作来覆盖其功能

window.alert = function alert(msg) {
  console.log('Hidden Alert ' + msg);
};
只需记住在清单中的文档开始处通过清单内容脚本修改器运行该内容脚本

我相信有一个扩展就是这样做的。开发人员将其命名为nicealert。

是的,您可以,alert()只是一个JavaScript方法,您可以通过执行以下操作来覆盖其功能

window.alert = function alert(msg) {
  console.log('Hidden Alert ' + msg);
};
只需记住在清单中的文档开始处通过清单内容脚本修改器运行该内容脚本

我相信有一个扩展就是这样做的。开发人员将其命名为nicealert。
谢谢。这很有帮助。然而,我意识到我需要这样做才能让它工作

location.href="javascript: window.alert = function(x) {console.log(x)};"
如果我想删除警报和确认,我可以这样做

location.href="javascript: window.alert = function(x) {console.log(x)}; window.confirm = function(){return true;};";

多谢各位。这很有帮助。然而,我意识到我需要这样做才能让它工作

location.href="javascript: window.alert = function(x) {console.log(x)};"
如果我想删除警报和确认,我可以这样做

location.href="javascript: window.alert = function(x) {console.log(x)}; window.confirm = function(){return true;};";

正如@MrGlass所说,目前,Chrome扩展在一个单独的环境中运行,限制了对实际
窗口
对象的访问,并提供了一个仅对扩展有效的副本

为了解决这个问题,我们可以将脚本元素直接注入到文档中。这样,您就可以访问文档的环境和真正的
窗口
对象

首先,让我们创建函数(我也添加了“确认”,因为一些确认让我非常恼火):

现在,我们要做的是在文本脚本中转换该函数并将其括在括号中(以避免与页面环境中的实际变量发生冲突):

最后,我们注入一个脚本元素,并立即将其删除:

var disablerScriptElement = document.createElement('script');
disablerScriptElement.textContent = disablerCode;

document.documentElement.appendChild(disablerScriptElement);
disablerScriptElement.parentNode.removeChild(disablerScriptElement);

正如@MrGlass所说,目前,Chrome扩展在一个单独的环境中运行,限制了对实际
窗口
对象的访问,并提供了一个仅对扩展有效的副本

为了解决这个问题,我们可以将脚本元素直接注入到文档中。这样,您就可以访问文档的环境和真正的
窗口
对象

首先,让我们创建函数(我也添加了“确认”,因为一些确认让我非常恼火):

现在,我们要做的是在文本脚本中转换该函数并将其括在括号中(以避免与页面环境中的实际变量发生冲突):

最后,我们注入一个脚本元素,并立即将其删除:

var disablerScriptElement = document.createElement('script');
disablerScriptElement.textContent = disablerCode;

document.documentElement.appendChild(disablerScriptElement);
disablerScriptElement.parentNode.removeChild(disablerScriptElement);

此方法不再有效=内容脚本中的javascript从主页沙盒中删除。这会更改内容脚本中的警报功能,但不会更改主页。这是真的@MrGlass。请参阅我的答案,了解如何解决此问题。此方法不再有效=内容脚本中的javascript从主页沙盒中删除。这会更改内容脚本中的警报功能,但不会更改主页。这是真的@MrGlass。请参阅我的答案,了解如何解决这个问题。如何在“javascript:”上下文中获取任何内容?当我尝试此操作时,我无法调用任何函数。不确定,抱歉。这可能是一个过时的答案。我想知道为什么它得到这么多的反对票。我想可能遇到了@MrGlass评论为上一个问题的答案的问题。您如何在这个“javascript:”上下文中获得任何东西?当我尝试此操作时,我无法调用任何函数。不确定,抱歉。这可能是一个过时的答案。我想知道为什么它得到这么多的反对票。我想可能遇到了@MrGlass评论为上一个问题的答案的问题。工作起来很有魅力!我用测试了你的代码,但没用,你能帮忙吗?所以像我这样的傻瓜到底是怎么使用这个密码的?真是妙不可言!我用测试了你的代码,但没用,你能帮忙吗?所以像我这样的傻瓜到底是怎么使用这个代码的?