无论如何,有使用JavaScript检测警报的方法吗?

时间:2019-08-24 12:17:10

标签: javascript

当前对javascript还是陌生的,当我对自己的作业有想法时,我遇到了一些问题。

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

我进行了搜索,发现了这个主题,但是并没有太大帮助。 Detect if an alert or confirm is displayed on a page

我尝试使用脚本https://i.imgur.com/w0ISrHC.png

解决验证码时遇到的问题

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

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

3 个答案:

答案 0 :(得分:1)

我认为打开警报后,您将不会知道并运行任何脚本。 打开控制台并运行间隔进行测试:

setInterval(() => console.log('test'), 1000);

然后运行:

alert(1);

您将看到在关闭警报之前,该间隔不会记录为“测试”。

要执行此操作,您可能需要创建另一个将在另一个选项卡中运行的应用程序,并向其发送消息。如果另一个应用程序将检测到超时-那么您可以重新加载页面。

更新

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

window.alert = () => location.reload();

答案 1 :(得分:0)

尝试this fiddle。我对警报功能进行了修改,然后您可以检查消息以注入您的东西。

(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')

答案 2 :(得分:0)

有趣的问题,我有一些简单的解决方案可以防止发出警报。  首先,我收集并记住什么是原点警报原型方法。  我覆盖警报。其他程序很简单...

window["cloneOriginAlert"] = alert;

alert = function (msg, prevent) { 
    
          if ( typeof prevent !== 'undefined') { return; }
    
          var test = prompt("You wanna see alert ? ", "Alert is comming !!! "); 
     
          if (test != null) {
             console.warn("Alert is allowed here ! ", msg)
             window["cloneOriginAlert"](msg);   
          } else {
            console.log("No alert here")
          }
          
    }  
    
    alert("Hello bug")

我希望这就是你想要的!