É possível parar a execução do JavaScript?

É possível, de alguma forma, interromper ou encerrar o JavaScript de forma a impedir que ocorra qualquer execução baseada em JavaScript, sem recarregar o navegador?

Estou pensando em um equivalente JavaScript de exit() no PHP.

Resposta curta:

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

Se você quiser saber mais, continue lendo.


Você quer parar a execução do JavaScript para desenvolvimento / debugging?

O debugger; expressão debugger; em seu código, interromperá a execução da página e, em seguida, as ferramentas de desenvolvedor do seu navegador permitirão que você revise o estado de sua página no momento em que ela foi congelada.

Você quer parar seu aplicativo arbitrariamente e por design?

Em erro?

Em vez de tentar parar tudo, deixe seu código manipular o erro. Leia sobre a Exception s por googling. Eles são uma maneira inteligente de deixar seu código “pular” para procedimentos de manipulação de erros sem usar blocos tediosos se / else.

Depois de ler sobre eles, se você acredita que interromper o código inteiro é absolutamente a única opção, lançar uma exceção que não será “pego” em qualquer lugar, exceto no escopo “root” do seu aplicativo, é a solução:

 // 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!"); 

tenha certeza que você não tem catch() blocos que capturam qualquer exceção; neste caso, modifique-os para relançar sua exceção "FatalError" :

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

Quando uma tarefa é concluída ou um evento arbitrário acontece?

return; terminará o stream de execução da function atual.

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

Nota: return; funciona apenas dentro de uma function.

Em ambos os casos…

… você também pode querer saber como parar o código asynchronous. É feito com clearTimeout e clearInterval . Finalmente, para parar solicitações XHR ( Ajax ), você pode usar o método xhrObj.abort() ( que também está disponível no jQuery ).

Você pode criar um erro de digitação em JavaScript: D (pensando fora da checkbox aqui)

 thisFunctionDoesNotExistAndWasCreatedWithTheOnlyPurposeOfStopJavascriptExecutionOfAllTypesIncludingCatchAndAnyArbitraryWeirdScenario(); 

Ou algo como:

 new new 

Algo como isso pode funcionar:

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

Tirado daqui:

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

Não.

Mesmo se você lançar uma exceção, ela apenas matará o loop de evento atual. Retornos de chamada passados ​​para manipuladores de events setTimeout ou DOM / XMLHttpRequest ainda serão executados quando chegar a hora.

Eu faço:

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

Desta forma, eu tenho 5 segundos para interagir com a interface do usuário e, em seguida, em paradas. O tempo que usei foi quando precisei deixar a dica de ferramenta personalizada visível, para fazer algumas alterações de estilo.

estou usando

return false;

se eu quiser anular o JavaScript de correr mais para baixo.

Se você estiver em uma function, você pode sair usando return; mas isso não impede a execução da function pai que chamou essa function.

Você pode chamar return antecipadamente em uma function e, pelo menos, essa function deixará de ser executada. Você também pode usar o throw '' para causar um erro e parar o processo atual. Mas isso não vai parar tudo. setTimeout e setInterval podem fazer funções e funções atrasadas que são executadas em um intervalo de tempo, respectivamente. Aqueles continuarão a correr. Eventos Javascript também continuarão funcionando normalmente.

O processo é tedioso, mas no Firefox:

  1. Abra uma aba / janela em branco para criar um novo ambiente para o script a partir da página atual
  2. Preencha esse novo ambiente com o script para executar
  3. Ativar o script no novo ambiente
  4. Feche (isto é, mate) esse novo ambiente para …

interromper ou encerrar o JavaScript de forma a impedir que qualquer outra execução baseada em JavaScript ocorra, sem recarregar o navegador

Notas:

  • O passo 4 só interrompe a execução de JavaScript nesse ambiente e não os scripts de outras janelas
  • A página original não é recarregada, mas uma nova guia / janela é carregada com o script
  • Quando uma aba / janela é fechada, tudo nesse ambiente desaparece: todos os remanescentes, resultados parciais, código etc.
  • Os resultados devem migrar de volta para o pai ou outra janela para preservação
  • Para executar novamente o código, as etapas acima devem ser repetidas

Outros navegadores têm e usam convenções diferentes.

Defina uma variável dentro da function JavaScript, defina esta variável para 1 se você quiser ot executar a function e configurá-la para 0 se quiser parar

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

Eu sei que isso é antigo, mas eu queria fazer isso e descobri, na minha opinião, uma solução um pouco melhor das respostas do lance. Apenas temporariamente suprimir as mensagens de erro e reativá-las mais tarde usando 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');