Javascript: почему иногда alert () не работает, но консоль.журнал() делает?

время от времени, я сталкиваюсь с очень интригующим ошибка. Мой код javascript не отображает предупреждение(msg) во время выполнения, но если я использую консоль.log (msg)он отображается в консоли. Что может помешать отображению alert ()?

Спасибо большое

7 ответов


Это очень распространенная проблема, и каждый сталкивался с этой проблемой по крайней мере один раз. Причина, по которой alert() не работает, заключается в том, что ранее вы установили флажок "запретить этой странице создавать дополнительный dialoug".

давайте посмотрим на этот код.

<script type="text/javascript">

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

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

</script>

при запуске кода будет два поля предупреждения. Если вы установите флажок" запретить этой странице создавать дополнительные dialoug", а затем обновите страницу снова, вы никогда не получите предупреждение снова.

решение: вам нужно закрыть эту веб-страницу и снова открыть ее в браузере(не нужно закрывать весь браузер). Я предполагаю, что вы используете Chrome. Internet Explorer или FireFox не имеют этой функции флажка.


Если вы переопределите функцию оповещения, чтобы она не работала

alert = function() 
{
 ...
};

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

to my knowledge alert () всегда отображается, если он не повторяется, и в этом случае вас спросят, хотите ли вы продолжать показывать оповещения.

Я полагаю, что особенности того, как это обрабатывается, зависят от Вашего браузера. Не хотите поделиться подробностями? :)


Это также происходит в ColdFusion. Если вы используете в любом месте после тега скрипта тег cflocation (вместо location.href) предупреждение не будет отображаться.


в Firefox: перейдите в раздел Параметры - > содержимое и снимите флажок" блокировать всплывающие окна". Перезапустите браузер.


еще одна причина, почему alert, confirm и prompt может игнорироваться браузером, если документ находится в iframe что есть sandbox-атрибут, без allow-modals в его стоимости.

например, Firefox молча игнорирует это, однако Chromium показывает предупреждение.


Это также может произойти в Firefox, если у вас открыты инструменты разработки и Адаптивный Режим Проектирования включено. Это звучит как это ошибка.