在IE8窗口关闭的Java脚本

BOS*_*OSS 2 javascript browser internet-explorer

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

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;
    }             
};
Run Code Online (Sandbox Code Playgroud)

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

ant*_*rat 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调用必须同步.异步调用不起作用.