【Tips】iPad でポップアップの window.onunload 代替え処理を実装 [iOS]
個人的には Web システムで window クローズ系イベントをトリガーとする処理は実装しない方がよいと思いますが、仕事上で改修の必要に迫られたので調べてみました。
iPad に搭載されている Safari Mobile では、window.onload や window.onunload イベントが発生しません。
ロード時には代替えイベントがあるし、ポップアップ(window.open で開いたウィンドウ)でなければアンロード時の代替え方法もあるんだけど、ポップアップのアンロードではちょっとハマりかけました。
window.onpagehide は来るタイミングが遅いし、body.onunload は来ませんでした。
JavaScript でクローズ処理が書けるなら、以下の方法が使えるようです。
$(window).bind("pagehide", null, function() { /* イベント処理 */ });
・・・
window.open("about:blank", "_self").close();
ブランクで window のアンロードを発生させることで、期待通りのタイミングで onpagehide イベントを発生させる…という流れですね。
しかし残念なことに、Safari Mobile タブ上の × ボタンでクローズされると、この実装は役に立ちません。