3

ユーザーが自分のページに到着したときにデータを投稿しようとしています。これはクロムとエクスプローラー、そしてFirefoxでも機能しますが、Firefoxでは、ユーザーがページを閉じた場合にのみ機能します。彼らが戻るか、別のサイトに移動すると(アドレスバーなどに入力して)、データは投稿されません。私の質問は、 onbeforeunload を使用してデータを投稿する正しい方法は何ですか?

$(window).bind('beforeunload', function () {

      $.post("track.php", {
         async: false,
         ip: ip,
         referer: referer,
         clicks: kactane2,
         scrolls: kactane,
         time: time,
         refid: refid,
         country: country, 
      });

});
4

1 に答える 1

2

onbeforeunloadそれは意図された使用方法ではないため、良い方法はありません。

正しい使用方法onbeforeunloadは、このイベントをリッスンし、ユーザーがページを離れるために使用している可能性のあるデータまたはリソースをアンロードすることです。新しいことを始めようとするためにそれを使うべきではありません。HTML5 仕様 によると、showModalDialog()alert()confirm()およびprompt()は明示的に許可されておらず、イベント ハンドラー、Web ワーカー、およびその他のものをクリーンアップするための時間を提供することが目的です。

イベント ハンドラーが定義されている場合、ユーザーには"Are you sure you want to leave?"、セキュリティ上の理由からフォームは通常カスタマイズできませんが、ブラウザーによって異なりますというページが表示される場合があります。

おそらく、データを Cookie に設定するか、ブラウザーでのみ発生する迅速に実行できる何かを設定してから、次のページの読み込み時にそのデータを探す方がよいでしょう。

于 2013-06-18T13:49:41.080 に答える