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

StackOverflow https://stackoverflow.com/questions/894530

  •  23-08-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

Это одна из веских причин использовать Firebug и консоль.функция ведения журнала.Что, по иронии судьбы, приведет к тому, что в некоторых случаях "остановить скрипт, потому что он завершает диалог" не будет отображаться, что означает, что вы возвращаетесь туда, где находитесь сейчас.

В Chrome и Opera есть эта функция.IE этого не делает, Apple Safari тоже.

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

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

var displayAlerts = true;

И тогда:

function alert(msg) {
  if (displayAlerts) {
     if (!confirm(msg)) {
       displayAlerts = false;           
     }
  }
}

Другие советы

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

  1. Удерживайте клавишу Ctrl
  2. Удерживать Ввод
  3. Нажмите F4 один раз

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top