为什么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>
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>
{
document.location.href=“WebForm3.aspx?cookid=0&cooktime=2010/7/12 16:56:53”;
}也不行!五分钟以后还是没反应!
这样执行吗?如果这样执行,就是你代码问题了
ff是没有onbeforeunload 这个事件吧。
可以考虑触发关闭提示对话框,在提示发起之前发送请求。如果网速足够快,也许能在用户点击对话框提示按钮之前完成请求(依然不保险)。
window.attachEvent('onunload',function(){onChangeCompany();});下面代码写:
onbeforeunload="BeforeunLoad()"你怎么两个都用了???只用下面一个就行了
写在外面:
window.onunload = function(){
//要执行的操作
}
不过有缺点,就是如果非正常情况下关闭页面,不执行该函数(比如:死机,断电等),所以如果要求执行非常安全,那么,还是不要在这个事件中写。
这个在IE6,FF下都会执行!
猜测:不执行的原因应该和AJAX异步有关!