2012-05-15 33 views
2

当浏览器关闭时,我已经实现了一些功能。Java Script关闭IE8窗口

window.onbeforeunload = function (evt) { 

    evt = (evt)? evt:event; 
    clickY = evt.clientY; 
    altKey = evt.altKey; 
    keyCode = evt.keyCode; 

if (altKey == true && keyCode == 0){ 
      //Make call to the server to clear the cache     
    }else if(clickY < 0){ 
    //Make a call to the server to clear the cache 
    }else { 
     return; 
    }    
}; 

现在在上面的代码中的问题是当过我按下通过点击地址栏或进入我刷新页面刷新按钮,我的代码给我警报(“21112”),我不想因为只有当浏览器关闭时,该调用才会触发。 所以有人可以帮助我实现这一目标。

+0

然后检查输入密钥和F5键... – gdoron

+2

你不能这样做 - 当当前页面被导航离开时触发事件 - 这意味着导航到不同的页面或浏览器关闭 – ManseUK

+0

@gdoron它总是给键码0 – BOSS

回答

7

window.onbeforeunload事件在你的页面被调用之前是unload ed。 没有办法检查它是刷新还是浏览器窗口关闭事件。

它触发不同的场景MSDN

  • 关闭当前窗口。
  • 通过输入新地址或选择收藏夹导航到其他位置。
  • 单击指向其他文档的锚。
  • 调用anchor.click方法。
  • 调用document.write方法。
  • 调用document.close方法。
  • 调用window.close方法。
  • 调用window.navigate或NavigateAndFind方法。
  • 调用location.replace方法。
  • 调用location.reload方法。
  • location.href属性指定新值。
  • 通过INPUT type=submit控件将表单提交到ACTION属性中指定的地址,或调用form.submit方法。
  • 调用window.open方法,为窗口名称提供可能的值_self
  • 调用document.open方法。
  • 单击后退,前进,刷新或主页按钮。

而你无法处理这个问题。

还要注意的是window.onbeforeunload事件应该通知他离开页面,处理函数应该将包含在确认弹出return字符串值(除Firefox 4+bug)用户。

您无法强制用户留在页面上。

注:你可以用onbeforeunload做的唯一一件事就是通知他离开你的页面 (用户,这是因为一些页面可以打开另一个页面等...和垃圾邮件的用户这是安全限制)。

如果您想在卸载窗口之前进行AJAX调用,您需要使用onunload事件。请注意,您的AJAX呼叫必须是我synchronus。异步调用不起作用。

0

this线程中的那个人说他的方法基于onbeforeunload事件在IE中工作。然而,你最好的(和跨平台的)机会做你想做的就是设置一个Ajax polling requesthere is a nice demo)来检查自上次用户活动以来经过了多少时间并相应地清除缓存。

0

我在这个问题上工作了一段时间,所以我会向你解释我发现了什么。

1)window.onbeforeunload事件由每个浏览器处理有点不同 - 我看到会话一旦事件触发就会丢失,无论用户是否选择留在页面上。

2)Web应用程序根本没有权力阻止用户关闭浏览器或从页面导航(出于显而易见的原因),但通过实现服务器端钩子,我可以调用必要的清洁高达码仅当浏览器被关闭,所以我没有打扰提示用户(这是一种像劫持反正他们的浏览器)

如果您需要关闭该窗口,然后你要促使他们之前提示用户当他们输入新的网址时也是如此。他们是一个一样的