se commetto un errore nel codice e provoco un loop infinito in JavaScript e continua a chiamare alert(), c'è una via d'uscita per fermare il loop?
-
23-08-2019 - |
Domanda
a volte utilizzo il codice di debug per avvisare qualcosa in JavaScript (ad esempio, abbinando qualcosa nell'espressione regolare), ma dimentico un modificatore e l'avviso è in un ciclo infinito (o se il ciclo corrisponde al modello 300 volte).Se utilizzi Firefox, l'avviso continua a essere visualizzato e non c'è nemmeno modo di chiudere la scheda, la finestra o l'app.
Se forzo l'uscita, verranno chiuse tutte le schede e anche le altre finestre di Firefox...esiste effettivamente un modo per fermare il ciclo in modo più elegante?
Soluzione
La risposta breve è:. No
Questa è una buona ragione per usare Firebug e la funzione console.log. Il che, per ironia della sorte, farà sì che il "copione fermata perché è scappare finestra di dialogo" per non visualizzare, in alcuni casi, nel senso che è terzino destro dove siete ora.
Chrome e Opera hanno questa caratteristica. IE non lo fa, Apple Safari non lo fa neanche.
Non una soluzione nativa, ma si potrebbe provare questo script rattoppa-: http://www.tumuski.com/2008/05/javascript-alert-cancel-button/
Inoltre, è potrebbe semplicemente ignorare la funzione di allarme di utilizzare una conferma di dialogo, invece, e interrompere la visualizzazione allarmi se la conferma viene annullata:
var displayAlerts = true;
E poi:
function alert(msg) {
if (displayAlerts) {
if (!confirm(msg)) {
displayAlerts = false;
}
}
}
Altri suggerimenti
Sembra che tu possa farlo in Firefox:
- Tieni premuto Ctrl
- Tieni premuto Invio
- Premi F4 una volta
Secondo il post del blog, non funziona in tutti i casi, maggiori informazioni qui: puremango.co.uk
Google Chrome consente di impedire ulteriori avvisi da mostrare.
Ho scritto un estensione per Firefox per combattere questo problema.
In nessun modo. Buona cosa è se la maggior parte dei browser hanno una protezione ricorsione infinita, ma questo è offtopic.
Installa Greasemonkey e andare a questa pagina: http://www.tumuski.com/2008/05/javascript -cancel-tasto -alert /
Dopo aver installato questo script per Greasemonkey, qualsiasi finestra di dialogo di avviso avrà un pulsante che si fermerà il javascript annullare.
[testato su IE 11] Se è necessario chiudere il browser web e non volete ctrl-alt-del per qualsiasi motivo (nel mio caso il mio male ciclo infinito javascript allarme è stato eseguito su Citrix che ricaricare automaticamente la mia ultima sessione dopo un ctrl-alt-del dalla memoria cache, che non posso chiaro)
è possibile bug tua via d'uscita da tenendo premuto Alt-F4 e spamming il X (per chiudere la finestra del browser).
Questo funziona veramente veloce ... L'alt-F4 chiude le caselle di avviso veramente veloce e si noterà il tasto X nella parte superiore del vostro sfarfallio browser. Questo ti dà molto piccole finestre di tempo in cui si può chiudere tra le segnalazioni.
. Nota: se si dispone di più schede aperte è necessario chiuderli dall'icona sulla barra di controllo nella parte inferiore dello schermo in primo luogo perché il "chiudere tutte le schede messaggio" interferirà