So supposedly starting at Firefox > 4、ウィンドウjQueryオブジェクトをbeforeunload
にバインドしてもはや動作しません。AJAXをサーバーbeforeunloadに送信する
私のやりたいことは、サーバーのMemcacheデータを削除するAJAX投稿を送信することです。
開いている唯一のタブをリフレッシュすると、beforeunload
イベントがconsole.logメッセージ「firefox/NON-firefox delete」で示されるように、firefoxとchromeの両方で次のコードで呼び出されていることがわかります。問題は、私のサーバーが$.ajax
要求を見たことがないことを示すconsole.logメッセージ "memcache delete"が表示されないことです。
ブラウザスニッフィングを行うのが悪いことと、if文とelse文に含まれる内容に違いがないことが分かります。私は単にFirefoxでうまくいっていなかったコードを表示しています。
誰もが考えている?
$(window).bind('beforeunload', function(){
if(/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) {
console.log('firefox delete');
memcacheDelete();
return null;
}
else {
console.log('NON-firefox delete');
memcacheDelete();
return null;
}
});
function memcacheDelete() {
$.ajax({
url: "/memcache/delete",
type: "post",
data:{},
success:function(){
console.log('memcache deleted');
}//success
}); //ajax
}
はい...私は非同期呼び出しを理解する方法は、これは私が考えたものである... + 1 – cliffbarnes
@Jashwant、explanation.Thoughに感謝ブラウザを閉じた後にChromeを使用したときにMemcacheの削除が成功したという証拠がありますが、まだFirefoxでは**削除されていません。ここに何か他のものがあるようです。 '$ .ajax'を同期、async:false'に変換する必要がありますか? –
['$ .ajax'オプション' async'を 'false'に変更しました](http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings)問題を修正します。誰かがそれをしたくない理由がありますか? –