2014-01-22 2 views
15

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

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

+2

Вы могли бы показать код js? – wpdaniel

+2

Не могли бы вы предоставить [SSCCE] (http://sscce.org/), который обнаружил проблему? – Tibos

+0

Происходит ко всему вашему коду? – Marciano

ответ

21

Это очень распространенная проблема, и каждый сталкивался с этой проблемой хотя бы раз. Причина 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> 

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

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

+0

Это также предотвращает работу диалоговых окон подтверждения. –

1

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

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

+0

Это то, что я думал, но иногда бдительные не показывают. Я не мог обойти это, и у меня нет конкретного примера, когда он всегда находится в середине огромного проекта ... – siebmanb

4

Если переопределить функцию предупреждения, поэтому он не будет работать

alert = function() 
{ 
... 
}; 

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

Странно: это происходит в середине проекта, например, в обратном вызове, но а не в главном коде ... Может быть, связанный с областью и функцией переопределить действительно ... – siebmanb

0

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

1

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

Смежные вопросы