在IE10中卸载事件,没有表单数据

时间:2013-05-05 11:17:23

标签: javascript ajax internet-explorer internet-explorer-10

当用户关闭浏览器时,我将window.unload挂钩以在紧急情况下保存表单数据。我通过POST使用ajax发送它。这适用于IE9,Chrome等,但不适用于表格数据为空的IE10(使用GET是一种解决方法)。

我找不到任何对此行为的引用,是否在某处记录了?

1 个答案:

答案 0 :(得分:2)

我假设你正在使用这样的代码:

<html>
   ...
   <body onunload="inOnUnload();">
      ...

inOnUnload() - 函数的定义如下:

function inOnUnload() {
   xmlhttp.open("POST", "http://some-location", /*async*/ true);
   http.send(request);
}

IE10中的问题是,在文档最终被卸载后,它似乎取消了请求。这在表单数据有机会离开客户端之前发生。要在IE10中的onunload个事件中发送数据,您必须使用async = false中的XMLHttpRequest.open(...)参数。

以下对我来说很好:

function inOnUnload() {
   xmlhttp.open("POST", "http://some-location", /*async*/ /*!!!*/ false);
   http.send(request);
}