読者です 読者をやめる 読者になる 読者になる

【javascript】iPhoneでpagehideが2回呼ばれたときの対応

今回やりたかったことは、ページから離れるとき(リンクとか)にその内容をサーバーに通知したいということ。pagehideで実装したのだが、なぜかiPhoneだとこれが2回呼ばれる現象だった(safarichromeともに)。

以下のようなコードで確認したところ、2回送信されるのを確認。おそらく全く同時刻にランダム文字列が生成してるためかrandの部分が同じものが送信される。

var flg = true;
window.addEventListener("pagehide", function() {
  if (flg) {
    flg = false;
    var rand = ランダム文字列を生成
    var img = new Image();
    img.src = "https://xxx/?rand=" + rand
    document.body.appendChild(img);
  }
});

なのでやはりサーバー側でちゃんと対応しないとダメだねということで対応しました。以上です。