если я делаю ошибку в коде и вызываю бесконечный цикл в javascript, и он продолжает вызывать alert (), есть ли выход, чтобы остановить цикл? - PullRequest
9 голосов
/ 21 мая 2009

иногда я использую код отладки для предупреждения чего-либо в javascript (например, сопоставление чего-либо в регулярном выражении), но забываю модификатор, и предупреждение находится в бесконечном цикле (или, если цикл соответствует шаблону 300 раз). При использовании Firefox предупреждение продолжает появляться, и нет возможности даже закрыть вкладку, окно или приложение.

Если я принудительно завершу работу, он закроет все вкладки и даже другие окна Firefox ... есть ли способ остановить цикл более изящно?

Ответы [ 7 ]

17 голосов
/ 21 мая 2009

Краткий ответ: Нет.

Это одна из веских причин использовать Firebug и функцию console.log. Что, по иронии судьбы, приведет к тому, что в некоторых случаях «стоп-скрипт, потому что он запускает диалог», не будет отображаться, что означает, что вы вернулись туда, где вы сейчас находитесь.

Chrome и Opera имеют эту функцию. IE нет, Apple Safari тоже нет.

Не нативное решение, но вы можете попробовать этот скрипт обезжиренной обезьяны: http://www.tumuski.com/2008/05/javascript-alert-cancel-button/

Кроме того, вы могли бы просто переопределить функцию оповещения, чтобы вместо нее использовать диалог подтверждения и прекратить показ предупреждений, если подтверждение отменено:

var displayAlerts = true;

А потом:

function alert(msg) {
  if (displayAlerts) {
     if (!confirm(msg)) {
       displayAlerts = false;           
     }
  }
}
5 голосов
/ 17 августа 2010

Похоже, что вы можете в Firefox:

  1. Удерживайте Ctrl
  2. Удерживайте Enter
  3. Нажмите F4 один раз

Согласно сообщению в блоге, это работает не во всех случаях, больше информации здесь: puremango.co.uk

2 голосов
/ 21 мая 2009

Google Chrome позволяет запретить показ дополнительных оповещений.

1 голос
/ 25 сентября 2009

Я написал расширение Firefox для борьбы с этой проблемой.

https://addons.mozilla.org/en-US/firefox/addon/13176

0 голосов
/ 31 июля 2015

[протестировано в IE 11] Если вам нужно закрыть веб-браузер и по какой-либо причине не хотите ctrl-alt-del (в моем случае мой плохой цикл бесконечного оповещения javascript выполнялся на citrix, который автоматически перезагрузил бы мой последний сеанс после ctrl-alt-del из кеш-памяти, который я не могу очистить)

вы можете выйти из строя, удерживая нажатой клавишу alt-F4 и спамить X (чтобы закрыть окно браузера).

Это работает очень быстро ... Alt-F4 очень быстро закрывает окна предупреждений, и вы заметите, как мигает кнопка X в верхней части браузера. Это дает вам очень маленькие окна времени, когда вы можете закрыть его между оповещениями.

Примечание: если у вас открыто несколько вкладок, вам нужно сначала закрыть их с помощью значка на панели управления в нижней части экрана, потому что сообщение "закрыть все вкладки" будет мешать.

0 голосов
/ 01 октября 2009

Установите Greasemonkey и перейдите на эту страницу: http://www.tumuski.com/2008/05/javascript-alert-cancel-button/

После того, как вы установите этот скрипт для greasemonkey, в любом диалоговом окне предупреждения будет кнопка отмены, которая остановит JavaScript.

0 голосов
/ 21 мая 2009

Ни за что. Хорошо, что большинство браузеров имеют бесконечную рекурсивную защиту, но это оффтоп.

...