件のJavaScriptに対抗する防衛(?)JavaScript

半分ネタ。件の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_ALERTfalse/null/undefinedに戻せばOK。

これをTampermonkey等で全てのページで読み込むようにしておけば、もう無限alertを恐れることはない!
...うっかり普通の(無限じゃない)alertでキャンセルをクリックして「あ゛ぁぁ」ってなってしまう未来が見えるけど気にしない。

ちなみにwindow.confirm()window.alert()に挿げ替えられていた場合だと1回目のalertで止まる。window.alert()の戻り値がundefinedなので。