Javascript бесконечный цикл: Циклы while и for

Содержание

если я допустил ошибку в коде и вызвал бесконечный цикл в javascript, и он продолжает вызывать alert(), есть ли способ остановить цикл?


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

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


javascript alert firefox

person nonopolarity    schedule 21.05.2009    source источник



Ответы (7)

arrow_upward
17
arrow_downward

Короткий ответ — нет.

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

В Хроме и Опере есть такая функция. 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;           
     }
  }
}

person cgp    schedule 21.

05.2009


arrow_upward
5
arrow_downward

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

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

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

person Alex KeySmith    schedule 17.08.2010


arrow_upward
2
arrow_downward

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

person Shane Fulmer    schedule 21.05.2009


arrow_upward
1
arrow_downward

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

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

person Community    schedule 24.09.2009


arrow_upward
0
arrow_downward

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

person Dmitri Farkov    schedule 21.05.2009


arrow_upward
0
arrow_downward

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

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

person Community    schedule 01. 10.2009


arrow_upward
0
arrow_downward

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

вы можете найти выход, удерживая нажатой клавишу Alt-F4 и нажав X

(чтобы закрыть окно браузера).

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

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

person SomeGuy    schedule 31. 07.2015

Будет ли выполнен код, если он находится после непрерывного бесконечного цикла в JavaScript?

pagas48