所以据说从 Firefox > 4 开始,将窗口 jQuery 对象绑定到beforeunload
不再起作用。
我想做的是提交一个 AJAX 帖子来删除我服务器的内存缓存数据。
当我刷新唯一打开的选项卡时,我可以看到beforeunload
在 firefox 和 chrome 中都使用以下代码调用了该事件,console.log 消息“firefox/NON-firefox delete”证明了这一点。问题是我从未看到 console.log 消息“memcache delete”,表明我的服务器从未看到该$.ajax
请求。
我意识到进行浏览器嗅探是不好的,并且 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
}