Можно ли остановить выполнение скрипта? [дубликат]



этот вопрос уже есть ответ здесь:



можно ли каким-то образом остановить или прекратить JavaScript таким образом, что он предотвращает дальнейшее выполнение на основе JavaScript, не перезагружая браузер?



Я думая о эквиваленте JavaScript exit() в PHP.

1956   11  

11 ответов:

короткий ответ:

throw new Error("Something went badly wrong!");

если вы хотите узнать больше, продолжайте читать.


вы хотите остановить выполнение JavaScript для разработки / отладки?

выражение debugger; в вашем коде остановится выполнение страницы, а затем инструменты разработчика Вашего браузера позволят вам просмотреть состояние вашей страницы на момент ее замораживания.

вы хотите, чтобы остановить ваше заявление безосновательно и дизайн?

по ошибки?

вместо того, чтобы пытаться остановить все, пусть ваш код обрабатывает ошибку. Читайте о Exceptions с помощью Google. Это умный способ позволить вашему коду "перейти" к процедурам обработки ошибок без использования утомительных блоков if/else.

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

// creates a new exception type:
function FatalError(){ Error.apply(this, arguments); this.name = "FatalError"; }
FatalError.prototype = Object.create(Error.prototype);

// and then, use this to trigger the error:
throw new FatalError("Something went badly wrong!");

убедитесь, что у вас нет catch() блоки, которые ловят любой исключение; в этом случае измените их, чтобы перестроить ваш "FatalError" исключение:

catch(exc){ if(exc instanceof FatalError) throw exc; else /* current code here */ }

когда задача завершается или происходит произвольное событие?

return; прекращается поток выполнения текущей функции.

if(someEventHappened) return; // Will prevent subsequent code from being executed
alert("This alert will never be shown.");

Примечание: return; работает только в пределах функции.

в обоих случаи...

...вы также можете узнать, как остановить асинхронный код. Это делается с clearTimeout и clearInterval. Наконец, чтобы остановить XHR (Ajax) запросы, вы можете использовать xhrObj.abort() метод (который находится в jQuery а также).

вы можете сделать опечатку JavaScript :D (мышление вне коробки здесь)

thisFunctionDoesNotExistAndWasCreatedWithTheOnlyPurposeOfStopJavascriptExecutionOfAllTypesIncludingCatchAndAnyArbitraryWeirdScenario();

или что-то вроде:

new new

что то вроде этого должно работать:

function javascript_abort()
{
   throw new Error('This is not an error. This is just to abort javascript');
}

Взято отсюда:

http://vikku.info/codesnippets/javascript/forcing-javascript-to-abort-stop-javascript-execution-at-any-time/

нет.

даже если вы создадите исключение, оно убьет только текущий цикл событий. Обратные вызовы, переданные обработчикам событий setTimeout или DOM/XMLHttpRequest, будут по-прежнему выполняться, когда придет их время.

Я:

setTimeout(function() { debugger; }, 5000)

таким образом у меня есть 5 секунд, чтобы взаимодействовать с UI, а затем прекращается. Las время, которое я использовал, было тогда, когда мне нужно было оставить пользовательскую подсказку видимой, чтобы сделать некоторые изменения стиля.

Я использую

return false;

если я хочу прервать JavaScript от запуска дальше вниз.

Если вы находитесь в функции, вы можете выйти из нее с помощью return; но это не останавливает выполнение родительской функции, которая вызвала эту функцию.

можно назвать return в самом начале функции, и, по крайней мере, эта функция перестанет работать. Вы также можете просто использовать throw '' чтобы вызвать ошибку и останавливает текущий процесс. Но это не остановит все. setTimeout и setInterval можно сделать задержанные функции и функции, которые выполняются на временном интервале, соответственно. Они будут продолжать работать. События Javascript также будут продолжать работать в обычном режиме.

процесс утомительный, но в Firefox:

  1. откройте пустую вкладку / Окно, чтобы создать новую среду для скрипта с текущей страницы
  2. Заполните эту новую среду скриптом для выполнения
  3. активировать скрипт в новой среде
  4. закрыть (то есть убить) эту новую среду ...

остановить или прекратить JavaScript это [в] способ [что он] предотвратить[s] дальше Выполнение на основе JavaScript из происходящего, без перезагрузки браузера

Примечания:

  • Шаг 4 останавливает только выполнение JavaScript в этой среде, а не Скрипты любых других окон
  • исходная страница не перезагружается, но новая вкладка/окно загружается со скриптом
  • когда вкладка/окно закрыта, все в этой среде исчезло: все остатки, частичные результаты, код и т. д.
  • результаты необходимо перенести вернуться к родительскому или другому окну для сохранения
  • для повторного запуска кода необходимо повторить описанные выше шаги

другие браузеры имеют и используют различные соглашения.

определите переменную внутри функции JavaScript, установите эту переменную в 1, Если вы хотите выполнить функцию, и установите ее в 0, если вы хотите остановить ее

var execute;
function do_something()
{
if (execute == 1)
{
// execute your function
}
else
{
 // do nothing
}
}

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

setTimeout(function() {
    window.onerror = function(message, url, lineNumber) {  
        return false;
    };
}, 50); // sets a slight delay and then restores normal error reporting
window.onerror = function(message, url, lineNumber) {  
    return true;
};
throw new Error('controlledError');

Comments

    Ничего не найдено.