Lorsque vous obtenez une boucle infinie dans jsfiddle dans Chrome, votre seul choix (à ma connaissance) est de fermer l'onglet. Bien sûr, cela signifie que vous perdez tout votre travail dans la fenêtre actuelle! Existe-t-il un moyen facile d'arrêter un script à exécution infinie?
Tout a commencé parce que j’ai décidé d’échanger les instructions sur ma boucle
for (var c = 0; c <= 11; c++)
à
for (var c = 12; c > 0; c++)
Mais comme vous pouvez le voir ci-dessus, j'ai oublié de le changer de c++
à c--
.
Des idées?? J'ai toujours l'onglet ouvert et j'espère le récupérer sans le fermer :-)
En mode développeur, accédez aux ressources, recherchez votre script, copiez-le et collez-le dans un document texte ou une nouvelle fenêtre. Si vous ne le trouvez pas dans les ressources, recherchez une variable ou une ligne de code que vous avez utilisée.
Comment le faire sans mode développeur:
Une façon de rompre la boucle infinie consiste à générer une exception non gérée, qui interrompt l'exécution de la pile d'appels en cours .
foo.bar(args)
foo.bar=function(){throw 42;}
a travaillé pour moi. Je n'ai pas essayé, mais je pense qu'en surchargeant le getter ou le setter, vous pouvez utiliser l'astuce décrite ci-dessus également pour les assignations et les lectures, pas seulement pour les appels de fonction. De plus, en définissant une variable sur non définie, vous pouvez provoquer une erreur fatale (et donc rompre la boucle) si le champ de cette variable est utilisé dans la boucle. Par exemple, delete foo.tab
cassera foo.tab[42]
ou foo.tab.bar
. Pour une raison quelconque, il ne suffit pas d'écrire foo=undefined
dans la console (cela définit peut-être une variable locale dans la fenêtre de la console nommée foo).
Je ne pouvais pas démarrer le gestionnaire de tâches de Chrome tant que l'onglet Boucle était actif. Je devais sélectionner un autre onglet. Puis j'ai appuyé sur Shift-Escape pour lancer le gestionnaire de tâches, interrompre le processus JSFiddle, sélectionner à nouveau l'onglet, puis appuyer sur le bouton Précédent pour afficher la page sans exécuter le script.
JSFiddle charge le panneau "result" à l'aide d'une iframe. Depuis juin 2016, l'URL du cadre est l'URL Fiddle plus "/ show /". J'ai inspecté le code source de l'iframe et découvert qu'il chargeait encore une autre URL avec "/ light /". Une de ces URL doit contenir votre code source.
Si votre navigateur prend en charge le schéma d'URI view-source , vous pouvez accéder au code source de votre violon comme suit:
Lancez Process Explorer et supprimez le processus chrome qui utilise beaucoup de ressources CPU ... cela "plantera" la page et vous permettra de recharger ...
J'avais un fichier coincé dans une boucle et je bloquais aussi le tableau de bord sur JSFiddle.
Le même problème est venu ici, j'ai ouvert la console javascript dans un script en pause. (Suspendu à l'aide des outils de développement)
Ensuite, j'ai changé la valeur de la variable pour que la boucle while se termine.
Si d’autres sont bloqués après avoir lu les autres réponses, voici ce qui a fonctionné pour moi (Chrome, Mac). Pour moi, l'onglet JSFiddle était «bloqué», mais le reste de Chrome répondait correctement. La console JavaScript était ouverte dans le volet Ressources, mais elle ne répondait pas non plus. Recharger la page dans cet état n'a pas aidé car JSFiddle m'a donné le script avant que je ne reçois quoi que ce soit.
En fin de compte cela a fonctionné pour moi; peut-être que ça vous aidera aussi ...
Chrome > Preferences > Privacy
et désactivez JavaScript.View > Developer > View source
div
appelé 'panel_js'
.