Chromeのjsfiddleで無限ループが発生した場合、唯一の選択肢(知っていること)はタブを閉じることです。もちろん、これは現在のウィンドウですべての作業を失うことを意味します!無限に実行するスクリプトを停止する簡単な方法はありますか?
すべてが始まったのは、ループの方向を
for (var c = 0; c <= 11; c++)
に
for (var c = 12; c > 0; c++)
しかし、上記のように、c++
からc--
。
何か案は??私はまだタブを開いていますが、タブを閉じずに元に戻したいと思っています:-)
開発者モードで、リソースに移動してスクリプトを見つけ、それをコピーしてテキストドキュメントまたは新しいウィンドウに貼り付けます。リソースで見つからない場合は、使用した変数またはコード行を検索してください。
開発者モードなしでそれを行う方法:
無限ループを壊す方法の1つは、現在の呼び出しスタックの実行を停止する未処理の例外をスローすることです。そうするには:
foo.bar(args)
foo.bar=function(){throw 42;}
私のために働いた。試したことはありませんが、ゲッターまたはセッターをオーバーロードすることで、関数呼び出しだけでなく、割り当てと読み取りにも上記のトリックを使用できると思います。また、変数を未定義に設定すると、この変数のフィールドがループで使用されている場合、致命的なエラーが発生する可能性があります(したがって、ループを中断します)。例えば delete foo.tab
はfoo.tab[42]
またはfoo.tab.bar
。何らかの理由で、単にfoo=undefined
は、コンソールでは行いません(おそらく、fooという名前のコンソールウィンドウに対してローカルな変数を定義します)。
ループタブがアクティブなときにChromeのタスクマネージャーを起動できませんでした。別のタブを選択する必要がありました。次に、Shiftキーを押しながらエスケープキーを押して、タスクマネージャーを起動し、JSFiddleプロセスを強制終了し、タブを再度選択して、スクリプトを実行せずに戻るボタンを押します。
JSFiddleは、iframeを使用して「結果」パネルをロードします。 2016年6月の時点で、フレームのURLはFiddle URLと "/ show /"です。iframeのソースコードを調べたところ、 "/ lightでさらに別のURLを読み込むことがわかりました/ "。これらのURLの1つにソースコードを含める必要があります。
ブラウザが view-source URIスキーム をサポートしている場合、次のようにフィドルのソースコードにアクセスできます。
Process Explorerを実行し、大量のCPUを使用しているchromeプロセスを強制終了します...ページを「クラッシュ」させ、リロードさせます...
ファイルがループ状態になっていて、JSFiddleのダッシュボードもフリーズしていました。
ここでも同じ問題が発生しました。スクリプトの一時停止状態でjavascriptコンソールを開きました。 (開発者ツールを使用して一時停止)
次に、whileループが終了するように変数値を変更しました。
他の回答を読んだ後に他の人が立ち往生している場合は、ここで私のために働いたものです(Chrome、Mac)。私にとって、JSFiddleタブは「スタック」していましたが、残りのChromeレスポンシブです。リソースペインでJavaScriptコンソールを開いていましたが、レスポンシブでもありました。この状態でページをリロードしませんでした ' JSFiddleがスクリプトを提供してくれるので、何も手に入らないからです。
結局、これは私のために働いた。多分それもあなたを助けるでしょう...
Chrome > Preferences > Privacy
およびJavaScriptを無効にします。View > Developer > View source
div
という'panel_js'
。