「onBeforeunloadHandler」を仕込むとChromeではPage Unresponsiveのエラーが発生する

Google

(ちょっと詰まったのでメモ)

 

JavaScriptの関数にはページのリロードやブラウザの戻るをクリックしたときに、その遷移を防止するためにブラウザのモーダルで可否の確認を出現させる

「onBeforeunloadHandler」

というのがあるのですが、どうもChromeではこの関数を利用すると下のような

「The following page has become unresponsive. You can fot it to become responsive or kill it.」

というエラーが突如現れてきます。

 

f:id:momota10:20170604234239p:plain

確認のモーダル

 

f:id:momota10:20170604234243p:plain

Reload後に出現するエラー

 

ちなみにこれはChromeのバージョンによっては出現しないようで、

58.0.3029.110 (64-bit)

だと出現するのですが、

55.0.2883.87 (64-bit)

だと出ないことが確認されました。

 

Chromeが悪意ある人によるモーダルを表示させまくるといった行為を防止する目的でこのようにしているようです。今後「onBeforeunloadHandler」関数はあまり推奨されるものではないのかもしれません。

 

この現象は下記の執筆現在、下のリンク先にて確認することができます。

blog.yuhiisk.com

 

また、JCBのカード申し込みページにおいても同様の事象が確認できました。

オンライン入会申込