我可以使用Google Chrome扩展程序阻止警报()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以使用Google Chrome扩展程序阻止警报()相关的知识,希望对你有一定的参考价值。

我可以创建Google Chrome扩展程序以防止该网页执行alert()吗?

答案

是的,你可以,alert()只是一个javascript方法,你可以通过这样做来覆盖它的功能。

window.alert = function alert(msg) {
  console.log('Hidden Alert ' + msg);
};

只需记住通过run_at清单内容脚本修饰符在清单中的document_start运行该内容脚本。

我相信有一个扩展只是这样做。开发人员将其命名为Nice Alert。 https://chrome.google.com/extensions/detail/ehnbelnegmgdnjaghgomaakjcmpcakhk

另一答案

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

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

首先,让我们创建一个函数(我也添加了“确认”,因为有些确认很烦我):

var disablerFunction = function () {

    window.alert = function alert(msg) { console.log('Hidden Alert ' + msg); };
    window.confirm = function confirm(msg) { 
        console.log("Hidden Confirm " + msg); 
        return true; /*simulates user clicking yes*/ 
    };

};

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

var disablerCode = "(" + disablerFunction.toString() + ")();";

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

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

document.documentElement.appendChild(disablerScriptElement);
disablerScriptElement.parentNode.removeChild(disablerScriptElement);
另一答案

谢谢。这有帮助。但是,我意识到我需要这样做才能让它发挥作用

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

以上是关于我可以使用Google Chrome扩展程序阻止警报()的主要内容,如果未能解决你的问题,请参考以下文章

带有 Chrome 扩展的 Google 日历 API

SwiftUI:如何将内容阻止程序应用于 chrome?

使用 Chrome 扩展程序在 Google Chrome 浏览器中访问搜索查询文本

从Chrome扩展程序访问Google文档

如何在GMAILS Chrome扩展程序中阻止图像加载?

我可以使用 python 开发 Google Chrome 扩展吗? [复制]