半分ネタ。件のJavaScriptとは以下の記事を参照。
【??危険なプログラム??】"何回閉じても無駄ですよ?"と無限にアラートを出すサイトのコードを添削してみた。 - Qiita
内容としてはwhile(true)でwindow.alert()を呼び出し続けている。
Firefox等では繰り返しalertを呼ぶと「もう表示しない」みたいなチェックボックスが出て止めることができるらしい(昔はChromeもできたような記憶がある)。
しかし、少なくとも今試したらChromeではタブを閉じない限りDevToolsも開けない。
ということで意味もなく(?)無限ループを止められるようにしてみた。
window.alert = function(msg){
if (!window.DISABLE_ALERT){
if (!window.confirm(msg)){
window.DISABLE_ALERT = true;
}
}else{
throw new Error("alert diabled: this is not true Error.");
}
}
グローバル変数使ってるあたりあまりよろしくない気もするけど、これでもし無限alertを食らってもキャンセルをクリックすれば例外を投げてwhileを抜けることが可能。
そのままだと全てのalertが無効になってしまうので、DevTools等でwindow.DISABLE_ALERTをfalse/null/undefinedに戻せばOK。
これをTampermonkey等で全てのページで読み込むようにしておけば、もう無限alertを恐れることはない!
...うっかり普通の(無限じゃない)alertでキャンセルをクリックして「あ゛ぁぁ」ってなってしまう未来が見えるけど気にしない。
ちなみにwindow.confirm()をwindow.alert()に挿げ替えられていた場合だと1回目のalertで止まる。window.alert()の戻り値がundefinedなので。
コメント