当用户关闭浏览器时,我想确认“你要退出吗?”。 如果是,我想运行一些注销代码并显示消息“你已注销”。如果不是,那就什么都不做。
以下是我正在使用的代码:
window.onbeforeunload = closeit;
function closeit(e) {
var closeEvent = false;
if (event.clientY < 0)
closeEvent = true;
if ((closeEvent)) {
var response = confirm("Are you sure you want to log-off?");
if(response == true){
var swf = "SWFAPP";
var container;
if (navigator.appName.indexOf("Microsoft") >= 0)
{
container = document;
}
else
{
container = window;
}
container[swf].logOutUser();
alert("Logged off");
}
else{
}
}
}
以上代码无效,无论是否单击“确定”或“取消”,都会关闭浏览器。如果单击确定,则不会抛出警告消息“已注销”。
如果我删除确认行并说响应始终为true,则会运行注销代码并显示消息“已注销”。 Container.logOutUser更新DB中的用户状态。
答案 0 :(得分:0)
onbeforeunload
事件没有clientY
属性,因此closeEvent
始终为false
。
必须设置事件的returnValue
属性以防止页面卸载,但浏览器会通过提示用户来保留内部决策。另见:https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload
window.onbeforeunload = closeit;
function closeit(e) {
if (confirm("Are you sure you want to log-off?")) {
var container;
if (navigator.appName.indexOf("Microsoft") >= 0)
{
container = document;
}
else
{
container = window;
}
container[swf].logOutUser();
alert("Logged off");
}
else{
e.returnValue='Log-off cancelled.';
}
}
答案 1 :(得分:0)
window.onbeforeunload = function (evt) {
evt = window.event;
alert(evt.clientY);