用于cookie删除和页面刷新的Beforeunload事件
beforeunload event for cookie delete and page refresh
在我的网页中,我想在用户关闭窗口时注销用户。要捕获此事件,我使用beforeunload事件处理程序。但是当我关闭标签时,removeCookie没有被调用。
下面是示例代码。这是这个SO问题的修改代码
var preventUnloadPrompt;
var messageBeforeUnload = "my message here - Are you sure you want to leave this page?";
$('a').live('click', function () {
preventUnloadPrompt = true;
});
$('form').live('submit', function () {
preventUnloadPrompt = true;
});
if ($("#refreshFlag").val() == 1) {
preventUnloadPrompt = true;
};
$(window).bind("beforeunload", function (e) {
var rval;
if ($("#refreshFlag").val() == 1) {
preventUnloadPrompt = true;
};
if (preventUnloadPrompt) {
return;
} else {
removeCookie();
window.location = "/";
}
return rval;
})
我使用JQuery 1.5.2.
我想要的是当用户刷新页面时,它应该刷新,当选项卡关闭时"removeCookie"应该叫。我在上面的代码中做错了什么?
UPDATE
当刷新出现问题时,此事件从项目中删除。
问题是与live()
功能,这是从JQuery 1.7 deprecicate,即使你是使用旧版本的JQuery,可能是你的浏览器是最新的一个,这是不允许脚本执行,可能抛出js错误(与我的Chrome 35.0.1916.153相同)。
您所需要做的就是将live()
替换为on()
。下面是一些代码片段:
$(document).ready(function(){ debugger;
var preventUnloadPrompt;
var messageBeforeUnload = "my message here - Are you sure you want to leave this page?";
$('a').on('click', function(){ preventUnloadPrompt = true; });
$('form').on('submit', function(){ preventUnloadPrompt = true; });
if ($("#refreshFlag").val() == 1) { preventUnloadPrompt = true; };
$(window).on('beforeunload', function() { debugger;
var rval;
if ($("#refreshFlag").val() == 1) { preventUnloadPrompt = true; };
if(preventUnloadPrompt) {
return;
} else {
removeCookie();
window.location = "/";
}
return rval;
});
});
相关文章:
- 强制模板刷新ember.js
- 如何通过ajax刷新JSF填充的javascript变量
- 如何解决Yii中的页面刷新问题
- Jquery提交表单而不刷新
- 刷新页面后会出现警报
- 刷新后保留对网页的更改
- 如何在不刷新页面的情况下更新显示框
- 重定向时角度刷新浏览器
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- Javascript,输出结果后页面不断刷新
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 刷新父窗口后无法关闭窗口
- 刷新页面时hasClass不起作用
- X秒后刷新select元素
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 触发媒体查询断点时刷新页面
- 如何刷新列表框内容onclick或blur事件
- 用于cookie删除和页面刷新的Beforeunload事件
- 在页面刷新和href点击时调用Beforeunload
- 检查beforeunload是否由关闭选项卡/窗口或刷新引起