javascript - Javascript 在 IE8 中关闭窗口

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

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

最佳答案

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

它在不同的场景下触发 MSDN :

  • 关闭当前窗口。
  • 通过输入新地址或选择收藏夹导航到另一个位置。
  • 单击指向另一个文档的 anchor 。
  • 调用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 事件应该通知用户他离开了页面,处理函数应该返回 字符串值,该值将包含在确认弹出窗口中(Firefox 4+ 参见 bug )。

你不能强制用户留在页面上。

注意:您可以使用 onbeforeunload 做的唯一事情就是通知用户他将离开您的页面 (这是因为一些恶意页面可以打开其他页面等等...和垃圾邮件用户。这是安全限制)。

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

关于javascript - Javascript 在 IE8 中关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10598070/

相关文章:

javascript - 从计算属性访问 Knockout Observable 属性会出现 TypeError

javascript - 使用正则表达式捕获 `\"` 并拆分为数组

javascript - Date.toString 和 Date.toLocaleDateString 在 Chrome 和 Firefox 之间不一致?

javascript - 为什么 IE 在尝试访问弹出窗口的任何属性时会抛出 "access denied"错误?

jquery - 如何使用 jQuery 检测浏览器是否关闭

delphi - Delphi 2009 应用程序中的 Google map

javascript - 使用 jsonp 获取 400(错误请求)

javascript - 当鼠标悬停在变量上时,Firefox 开发者版不显示快速监视弹出窗口

javascript - 脚本5007 : Expected object in IE9 on Canvas HTML5

html - 我应该对 css.map 文件使用什么 rel 属性?