Javascript: Why sometimes alert() does not work but console.log() does?

蓝咒 提交于 2019-11-29 11:54:22

问题


From time to time, I face a very intriguing bug. My javascript code does not display an alert(msg) during execution, but if I use a console.log(msg) it does show up in the console. What could prevent alert() from displaying?

Thanks a lot


回答1:


This is a very common problem, and everyone has faced this problem atleast once. The reason alert() does not work is because previously you have checked "prevent this page from creating additional dialoug" checkbox.

lets take a look at this code.

<script type="text/javascript">

var js_name = ['elem1', 'elem2']

 for (var i = 0; i < js_name.length; i++) {
    alert(js_name[i]);
 };

</script>

There will be two alert boxes if you run the code. If you check the "prevent this page from creating additional dialoug" checkbox and then refresh the page again you won't get alert box ever again.

Solution is you need to close that webpage and reopen again in the browser(don't need to close the entire browser). I am assuming you are using chrome. Internet Explorer or FireFox doesn't have this checkbox feature.




回答2:


If you override alert function so it won't work

alert = function() 
{
 ...
};

alert('hello') // won't show any alert



回答3:


To my knowledge alert() is always shown unless it is repetitive in which case you are asked if you want to continue showing alerts.

I suppose the specifics on how this is handled depends on your browser. Care to share any more details? :)




回答4:


This also happens in ColdFusion. If you use anywhere after the script tag a cflocation tag (instead of location.href) the alert will not show.




回答5:


This can also happen in Firefox if you have Dev Tools open and Responsive Design Mode enabled. It sounds like it's a bug.




回答6:


In Firefox: go to Options -> Content and uncheck "block pop-up windows" check box. Restart browser.




回答7:


Another reason why alert, confirm, and prompt may be ignored by the browser, is if the document is in an iframe that has a sandbox-attribute without allow-modals in its value.

For example, Firefox silently ignores this, however Chromium shows a warning.




回答8:


I have a similar problem here, when I replace the console log with "alert" it is not working but console.log does work.

The not working code is :

request(options, function(error, response, body) { // Requesting API

    var statusCode = response.statusCode;

    if(statusCode === 200){
      alert("Success");
    } else {
      alert(error);
    }

and the working code is:

request(options, function(error, response, body) { // Requesting API

    var statusCode = response.statusCode;

    if(statusCode === 200){
      console.log("Success");
    } else {
      console.log(error);
    }


来源:https://stackoverflow.com/questions/21277406/javascript-why-sometimes-alert-does-not-work-but-console-log-does

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!