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/

相关文章:

CSS 选择器效率

javascript - 如何在 If 内的 php 中提交

css - IE忽略类=""问题

javascript - IE 不会清除 textarea 值

html - IE 6-7下推 float div

browser - 该网站使用 SSL,但 Google Chrome 检测到该网页上有不安全的内容

browser - fiddler 不捕获任何浏览器流量(不捕获 IE、FF 或 CHROME)

javascript - 如何在 jQuery 的 .html() 方法中使用 JavaScript 变量

javascript - 如何更改js中不同json项中的一个参数?

用于字母范围的 javascript 正则表达式,例如 AF-BC