2011-12-08 7 views
0

ユーザーがブラウザを閉じるかウィンドウを閉じるときに、自分のサーバーに投稿を送信しようとしています。ユーザーがウィンドウまたはブラウザを閉じるときのJqueryタスク

これは私がこれまで持っているものです。

$(window).unload(function(){ 
    $.post('/offline', {account_id: ACCOUNT_ID}); 
}); 

はしかし、これは、ユーザーが現在のウィンドウに新しいURLを入力したときに動作するようです。

ユーザーがウィンドウに新しいURLを入力するたびに、ブラウザまたはウィンドウが閉じられたときに、サーバーにポストを送信する必要があります。

誰もが、問題が何であるかを知っていますか?

ありがとうございます。

アップデート:私は上記のjavascriptのが私のために動作します

と思うが、しかし、これは、ウェブサイト上のすべてのイベントのために発生します。たとえば、リンクをクリックします。

ユーザーが新しいURLを入力するかウィンドウを閉じる場合にのみこれをトリガーすることは可能ですか?

答えて

1

ブラウザがシャットダウンされると、その動作を中断する手段が非常に限られてしまうという問題があります。このようなイベントがトラップできない、つまり電力やネットワークの接続性が損なわれるなど、ポストは決してうまくいかないという理由はたくさんあります。私はあなたがこれを捉える必要性を考え直し、あなたが別のやり方で解決しようとしている問題について考え直すことを提案します。

+0

ブラウザが閉じていないのにポストを作ることはできますが、ウェブサイトのウィンドウは閉じられていますか? – Brian

+0

+1私はウィンドウクローズに投稿する理由は純粋な統計的なものだと信じています。このページはユーザーがサイトを離れるようにします。ページにはユーザーが "再生されました"など。 – ComputerSaysNo

+0

http:// beforeunloadの制限事項を参照してください。 stackoverflow.com/questions/6063522/jquery-beforeunload –

0
window.onbeforeunload = function (e) { 
var message = "Your confirmation message goes here.", 
e = e || window.event; 
// For IE and Firefox 
if (e) { 
e.returnValue = message; 
} 

// For Safari 
return message; 
}; 
+0

これはウェブサイト上のすべてのものに対してトリガーされます。たとえば、リンクをクリックします。 – Brian

0

このアプローチの

$(window).bind("beforeunload", function()

possiballyの複製を使用することができます。

代わりに特定の間隔でサーバーにpingを実行し、サーバー側でpingを受信しなかった場合、ユーザーはログオフして処理されるように、setIntervalメソッドを定義する必要があります。

関連する問題