半分ネタ。件の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
なので。
コメント