読者です 読者をやめる 読者になる 読者になる

Google ChromeのJSのalert無限ループへの対応がすばらしい

先日のエントリの、JavaScriptで無限ループのエラーを出してしまった件について、Google Chromeならば、どうなるか試してみました。

JSで無限ループやらかしてしまった - maru.cc@はてな

IEはまだしも、Firefoxの場合、alertとかBasic認証のダイアログでブラウザごと持ってくのはやめて欲しいとか思った。閲覧中のタブ内でalert表示で、タブを閉じれば回避とか出来ればいいのに。

まずは、普通に無限ループ
<head>
</head>
<body>
<script type="text/javascript">
while (1) {
    document.write('a');
}
</script>
</body>
</html>

結果は、画面は真っ白のままですが、ブラウザは固まらずに、通常操作でタブを閉じたりURLを変更したりできました。

次に、alertの無限ループ
<head>
</head>
<body>
<script type="text/javascript">
while (1) {
    alert('a');
}
</script>
</body>
</html>

こちらは、期待以上の動きでした。
1回目は普通にalertが出て、2回目以降にはそれ以降もalertを出すかどうかのチェックが付きました。


1回目


2回目以降


これのチェックをつけなければ、複数回alertが出続けるのですが、チェックをつければ、普通の無限ループと同じ状態になるので、タブを閉じたりして復帰することができました。
ぜひ、この機能をFirefoxにも付けて欲しい。


とりあえず、ループのある JavaScriptのテストは、Google Chromeでやってみよう。