是否仍然可以使用javascript检测警报?

是否仍然可以使用javascript检测警报?,javascript,Javascript,目前我是javascript新手,当我对我的作业有了一个想法时,我遇到了一些问题 我不知道我们是否可以用javascript检测警报 我搜索了一下,找到了这个话题,但没什么帮助。 我尝试用脚本解决验证码时遇到的问题: 我期望: 如果我们的脚本检测到“无法联系reCAPTCHA。请检查您的连接并重试。” 我们将刷新页面并进行检查,然后再次尝试解决验证码问题。我认为当警报打开时,您将无法知道并运行任何脚本。 打开控制台并运行interval进行测试: setInterval(() => co

目前我是javascript新手,当我对我的作业有了一个想法时,我遇到了一些问题

我不知道我们是否可以用javascript检测警报

我搜索了一下,找到了这个话题,但没什么帮助。

我尝试用脚本解决验证码时遇到的问题:

我期望: 如果我们的脚本检测到“无法联系reCAPTCHA。请检查您的连接并重试。”


我们将刷新页面并进行检查,然后再次尝试解决验证码问题。

我认为当警报打开时,您将无法知道并运行任何脚本。 打开控制台并运行interval进行测试:

setInterval(() => console.log('test'), 1000);
然后运行:

alert(1);
您将看到,在关闭警报之前,间隔不会记录“测试”

要做到这一点,您可能需要创建另一个应用程序,该应用程序将在另一个选项卡中工作,并向其发送post消息。如果另一个应用程序检测到超时,那么您可以重新加载页面

更新

或者,您可以在调用警报时覆盖警报并重新加载页面:

window.alert = () => location.reload();
试试看。我在警报功能上做了一个黑客攻击,然后你可以检查消息来注入你的东西

(function (window) {
    const _alert = window.alert
    window.alert = (message) => {
        window.onAlert && window.onAlert(message, _alert)
    }
})(window)

function createRecaptcha() {
    grecaptcha.render("recaptcha", {sitekey: "6LcgSAMTAAAAACc2C7rc6HB9ZmEX4SyB0bbAJvTG", theme: "light"});
}

createRecaptcha();

window.onAlert = (message, alert) => {
  if(message === 'Cannot contact reCAPTCHA. Check your connection and try again.') {
    // do your stuffs, for example:
    document.body.innerHTML = '<h1>The alert is injected</h1>'
    return
  }

  alert(message)
}
alert('application alert')
(功能(窗口){
const\u alert=window.alert
window.alert=(消息)=>{
window.onAlert&&window.onAlert(消息,\u警报)
}
})(窗口)
函数createRecaptcha(){
render(“recaptcha”,{sitekey:“6LcgSAMTAAAAACc2C7rc6HB9ZmEX4SyB0bbAJvTG”,主题:“light”});
}
createRecaptcha();
window.onAlert=(消息、警报)=>{
如果(消息=='无法联系reCAPTCHA。请检查您的连接并重试。“){
//做你的事情,例如:
document.body.innerHTML='警报已注入'
返回
}
警报(信息)
}
警报(“应用程序警报”)

有趣的问题,我有一些简单的方法来防止警报。 首先,我收集并记住什么是originalert原型方法。 我超越了警报。其他程序很简单

window[“cloneOriginAlert”]=警报;
警报=功能(消息,防止){
if(typeof prevent!=='undefined'){return;}
var test=prompt(“您想看到警报吗?”,“警报即将发出!!!”;
如果(测试!=null){
console.warn(“此处允许警报!”,msg)
窗口[“cloneOriginAlert”](msg);
}否则{
console.log(“此处无警报”)
}
}  

警报(“你好,bug”)
我不明白你说的“检测警报”是什么意思。您是在谈论
警报
功能吗?如果是,您到底想检测什么?这一条:“无法联系reCAPTCHA。请检查您的连接并重试”我遇到一些连接问题,因此我需要检查警报是否存在,然后我们将重新加载页面。如果显示的是带有
警报的消息,我怀疑您能做些什么,因为
警报
正在阻塞,也就是说,只要警报窗口打开,就不会执行其他JavaScript。哦,这很有意义:)谢谢:)所以我建议采纳
Maxim Pyshko
的第一条建议。对
警报
元素的存在/显示进行一次简单的间隔检查即可实现此目的