ダウンロードリンクをクリックすると自動広告が表示されたままになる

僕のサイトではGoogle AdSenseの自動広告を使用しています。
しかし自動広告と自サイト内のダウンロードリンクの相性がよくないということが最近判明しました。
ダウンロードリンクをクリックすると広告が表示され、それ以降広告が消えてくれません。
致命的な問題なので、暫定的な対処法をお伝えします。

問題の詳細

サーバーに置いてあるファイルをダウンロードさせたい場合、僕は次のように単純にリンクを貼っています。

<a href="https://affi-sapo.com/wp-content/uploads/self-made-plugin-1.zip">self-made-plugin-1.zip</a>

リンクがクリックされた後は、ブラウザに全部お任せ。
ブラウザの判断で、ファイルを保存してくれます。

一方Google AdSenseの自動広告はサイト内のリンクがクリックされると、次のような自動広告を表示します。

AdSense ダウンロードクリック 不具合

リンク先がWebページだろうが、ファイルだろうが関係ありません。
ダウンロードのときも、表示されます。

ここで「閉じる」を押すとダウンロードが始まるのですが、自動広告はそのまま残るため閲覧中のWebページに戻ることができません。
非常に困ります。

致命的な不具合と呼んでいいかもしれません。

この問題に関して将来的にグーグルが対処するのか不明ですが、とりあえず自分でなんとかする必要があります。

暫定的な対処

今回は次のようなスクリプトを作成しました。

ダウンロードリンクの自動広告を無効にするスクリプト
<script>
(()=>{

    window.addEventListener("DOMContentLoaded", function() {

            // [ ]内に、対象となる拡張子を記述 [ "zip" , "jpg" , "png" ]等
        const checkExt = [ 
                            "zip"
                        ].map( e=>e.toUpperCase() );

        const a = document.getElementsByTagName("a");
        for( let i = 0;i < a.length ; i ++ ){

            const orgHref = a[i].href;
            if( orgHref ){
                const href = orgHref.toUpperCase();
                if( checkExt.some( e => href.endsWith( e ) ) )
                    a[i].addEventListener( "click" , e=>{
                        e.stopPropagation();
                        e.stopImmediatePropagation();
                        e.preventDefault();
                        location.href = orgHref;
                        return false;

                    },true);
            }

        }
    });

})();
</script>

これをWebページに貼り付けます。
場所はどこでもいいですが、head内か最終行付近(</body>の前)が望ましいです。

コードの説明は別のサイトでしているので、興味がある方はみてください。
【JavaScript】 Adsenseの画面遷移時の自動広告を無効にする

注意点

今後のAdSenseのアップデートによっては、上のコードでは対処できなくなる可能性があります。

また、AdSenseのスクリプトを解析したわけではないので、全ての状況に置いて上のコードで対処できるかどうかわかりません。
あくまで、やってみたらうまくいったというレベルのコードです。

この点をご了承ください。