2012-08-10 70 views
1

当用户关闭浏览器时,我想确认“您是否要注销?”。 如果是,我想运行一些注销代码并显示“您已注销”消息。 如果不是,就什么都不做。浏览器关闭事件确认。点击确定后运行一些代码,自定义代码

以下是我正在使用的代码。

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{ 

     } 

    } 
} 

上面的代码不工作,它关闭浏览器,无论我单击确定或取消。如果点击OK,则不抛出警告消息“已注销”。

如果我删除确认行并说响应始终为真,它将运行注销码并显示消息“已注销”。 Container.logOutUser更新数据库中的用户状态。

+0

你可以尝试'如果(确认(“你...”))的',而不是创建中间变量。 'confirm()'返回true或false,但是我总是对使用哪个'=='或'='感到困惑,所以如果IF(true)起作用,IF(confirm())应该可以工作。 – StuckAtWork 2012-08-10 15:38:33

回答

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.'; 
    } 
} 
+0

上面的代码片段工作。它关闭浏览器是和否。 – user418836 2012-08-10 19:15:45

+0

你使用什么浏览器?该代码在Firefox v14中以空HTML格式进行测试,并且没有第三方脚本。 – Jay 2012-08-11 07:39:36

0
window.onbeforeunload = function (evt) { 
evt = window.event; 
alert(evt.clientY); 
相关问题