为什么onunload方法在过五分钟后,就是死活不执行。如果一分钟内就可以执行。请各位高手指教。我从网上也找了些方法也是不行。帮我看看这是为什么。
window.attachEvent('onunload',function(){onChangeCompany();});
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebHit.WebForm1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <script type="text/javascript" language="javascript">
    function BeforeunLoad()
{onChangeCompany(); }    function onChangeCompany() 

//接收表单的URL地址 
var url="WebForm3.aspx?cookid=0&cooktime=2010/7/12 16:56:53"; 

//需要POST的值,把每个变量都通过&来联接 
var postStr = "cookid=0&cooktime=2010/7/12 16:56:53"; 

//实例化Ajax 
var ajax = InitAjax(); 
//通过Post方式打开连接 
ajax.open("POST", url, true); 
//定义传输的文件HTTP头信息 
ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
//发送POST数据 
//alert(postStr); 
ajax.send(postStr); 
//获取执行状态 
ajax.onreadystatechange = function() 

//如果执行状态成功,那么就把返回信息写到指定的层里 
if (ajax.readyState == 4 && ajax.status == 200) 





    function InitAjax() 

var ajax=false; 
try 

ajax=new ActiveXObject("Msxml2.XMLHTTP"); 

catch(e) 

try 

ajax=new ActiveXObject("Microsft.XMLHTTP"); 

catch(E) 

ajax=false; 


if(!ajax&& typeof XMLHttpRequest !='undefined') 

ajax=new XMLHttpRequest(); 

return ajax; 

    </script>
</head>
<body onbeforeunload="BeforeunLoad()">
    <form id="form1" runat="server">
    <div>
    
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    
    </div>
    </form>
</body>
</html>

解决方案 »

  1.   

    onunload是页面在刷新或是关闭就执行的。既然要定时就用setTimeout嘛
      

  2.   

    setTimeout 在什么地方用!请二楼的前辈指教!
      

  3.   

    你用的异步的Ajax,就算执行成功了,你的页面也不存在了,所以你看不到结果,你把那个异步改成同步试试
      

  4.   

    我改成同步了!function onChangeCompany() 

    document.location.href=“WebForm3.aspx?cookid=0&cooktime=2010/7/12 16:56:53”;
    }也不行!五分钟以后还是没反应!
      

  5.   

    <body onbeforeunload="alert('哦可?')">
    这样执行吗?如果这样执行,就是你代码问题了
      

  6.   

    <body onbeforeunload="alert('哦可?')">这样在ie才执行的吧。
    ff是没有onbeforeunload 这个事件吧。
      

  7.   

    我是Win7+VS2008+IE8 不知道哪里会出问题。
      

  8.   

    把AJAX请求放在unload事件中是不可靠的,因为如果网络有一定延迟,极有可能服务端还未接收到请求,页面就已经关闭。则服务端还未与页面建立连接,页面的请求就已经结束了。所以,服务端靠这个获取数据是不靠谱的。
    可以考虑触发关闭提示对话框,在提示发起之前发送请求。如果网速足够快,也许能在用户点击对话框提示按钮之前完成请求(依然不保险)。
      

  9.   

    上面写
    window.attachEvent('onunload',function(){onChangeCompany();});下面代码写:
    onbeforeunload="BeforeunLoad()"你怎么两个都用了???只用下面一个就行了
      

  10.   

    看不懂LZ到底啥意思。随便说说onunload事件吧。。
    写在外面:
    window.onunload = function(){
      //要执行的操作
    }
    不过有缺点,就是如果非正常情况下关闭页面,不执行该函数(比如:死机,断电等),所以如果要求执行非常安全,那么,还是不要在这个事件中写。
      

  11.   

    <body onbeforeunload="alert('哦可?')">
    这个在IE6,FF下都会执行!
    猜测:不执行的原因应该和AJAX异步有关!