卸载在 IE9 和 FF4 中不起作用

Posted

技术标签:

【中文标题】卸载在 IE9 和 FF4 中不起作用【英文标题】:unload not working in IE9 and FF4 【发布时间】:2011-08-24 14:33:09 【问题描述】:
var unloadOK = "false";//used as variable when data need to be send to the server
window.onbeforeunload = CheckBeforeUnload;
window.onunload = CheckUnload 

function CheckBeforeUnload()
  document.getElementById("ContentPlayer").CheckUnload("");
  return "Are you sure you want to exit?"


function CheckUnload()
  unloadOK = "true"; 
  pause(1000);

  alert("session saved");


function pause(millis) 

  var date = new Date();
  var curDate = null;

  do  
    curDate = new Date(); 
   while(curDate-date < millis);
 

上面是代码:当用户尝试关闭浏览器时,我正在尝试发送数据。 Onunload 方法在 IE7 和 IE8 中有效,但在 IE9 和 FF4 中无效。 应用程序内置在 Flex 3.0 sdk 中。

谁能建议 onunload 的问题是什么?是否有解决方案可以在浏览器关闭时可靠地发送数据以及 onunload 如何在所有浏览器中始终如一地工作?

【问题讨论】:

【参考方案1】:

上面是代码:我正在尝试发送 用户尝试关闭时的数据 浏览器。 Onunload 方法在 IE7 中工作 和 IE8,但不在 IE9 和 FF4 中。 应用程序内置在 Flex 3.0 sdk 中。

不确定它有多重要,但请尝试在将函数调用分配为处理程序之前放置它们。

function CheckBeforeUnload()
  document.getElementById("ContentPlayer").CheckUnload("");
  return "Are you sure you want to exit?"

您可能希望在这里使用alert() 而不是return

任何人都可以建议是什么问题 使用 onunload 是否有解决方案 当浏览器运行时可靠地发送数据 关闭以及 onunload 如何工作 在所有浏览器中始终如一?

不幸的是,用户可以简单地关闭页面所在的标签并绕过它。他们还可以使用谷歌浏览器的进程监视器来杀死标签。最后,他们可以强制退出应用程序。将此功能作为最终解决方案是不好的。

【讨论】:

要求:在浏览器关闭时显示警告信息。仅在浏览器确定关闭时发送数据。 onbeforeunload 方法返回用于显示默认警告。 alert 将起作用,但不会作为带有 ok 和 cancel 选项的警告消息。

以上是关于卸载在 IE9 和 FF4 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

占位符在 IE9 中不起作用 [重复]

跨域 Ajax 请求在 Opera 和 IE9 中不起作用?

console.log.apply 在 IE9 中不起作用

输入占位符css在IE9中不起作用[重复]

ExtJS3 快速提示在 IE9 中不起作用

“指针事件:无”在 IE9 和 IE10 中不起作用