在IE8窗口关闭的Java脚本

时间:2012-05-15 09:42:01

标签: javascript internet-explorer browser

我在浏览器关闭时实现了一些功能。

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;
    }             
};

现在上面代码中的问题是,当我通过点击地址栏按Enter键或刷新页面时刷新按钮我的代码给了我警报(“21112”)我不想要因为呼叫会触发仅当浏览器关闭时。 那么有人可以帮助我实现这一目标。

3 个答案:

答案 0 :(得分:8)

window.onbeforeunload事件是在您的网页unload之前调用的。 没有方法可以检查它是刷新还是浏览器窗口关闭事件。

它由不同的场景 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 。异步调用无效。

答案 1 :(得分:0)

this帖子中的人说他基于onbeforeunload事件的方法适用于IE。

然而,恕我直言,你最好(和跨平台)做你想做的事的机会是设置一个Ajax polling requesthere is a nice demo)来检查自上次用户活动以来已经过了多少时间相应地清除缓存。

答案 2 :(得分:0)

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

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

2)Web应用程序根本没有能力阻止用户关闭浏览器或导航离开页面(出于显而易见的原因)但是通过实现服务器端钩子,我能够调用必要的清理仅在浏览器关闭时代码,所以我不打扰提示用户(这有点像劫持他们的浏览器)

如果您需要在关闭窗口之前提示用户,那么当他们键入新的URL时,您将提示他们。它们是同一个