增加一个form
<form id=frm action= methond=>
<input type=hidden id=staytime value=0>
</form>
function bye() 
{
   //关闭的时候
   frm.staytime=time;
   frm.submit();
   alert("Bye");
   window.close();
}
不知道可不可以,看ie在close之前能不能把form提交,
如果这样不行的话,就用xml,后台传送过去。sXML =time
var xmlDoc = new ActiveXObject("MSXML.DOMDocument");
xmlDoc.async = false;
sXML = "<EWF><time>" + sXML + "</time></EWF>";
var httpObj = new ActiveXObject("Microsoft.XMLHTTP");
if(xmlDoc.loadXML(sXML))
{
httpObj.Open("POST",ActionFileURL(accept html url),false);
httpObj.Send(xmlDoc);
return httpObj.responseXML.xml;
}
else
{
return "FALSE";
}

解决方案 »

  1.   

    你在alert的时候做个写入数据库的动作不就行了!
      

  2.   

    你把time的值付给一个hidden里,然后提交,就能把这个值存到数据库里呀!!!
      

  3.   

    to:kisslan
    但是这个事件发生在页面关闭的时候,页面关闭了,还能将hidden中的值提交给数据库吗to:z2xx
    我的思路跟你的一样,但是我是用vbscript来编写的,javascript我不是很懂,今天是因为在做项目的时候才用到,你能给我提供一个这样的写入数据库的代码吗?不胜感激
      

  4.   

    用数据岛间接传送time到asp就不用提交了,而且还可以通过数据岛的状态改变
    触发你的函数,判断是否提交成功,更加保险
      

  5.   

    不过用onunload的话还是不好弄,open一个窗口,通过get的方式传到asp,完了自己window.close()应该可以
      

  6.   

    噢,不好意思,忘记了是用的onunload事件!那样的话,的确是不好解决了^Q^
      

  7.   

    嗯,你把提交事件放在alert()巳前运行不行吗?你的代码我改了一下,试试看
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"><SCRIPT language=Javascript>
    pageOpen = new Date();
    function bye() {
    pageClose = new Date();
    minutes = (pageClose.getMinutes() - pageOpen.getMinutes());
    seconds = (pageClose.getSeconds() - pageOpen.getSeconds());
    time = (seconds + (minutes * 60));
    if (time == 1) {
    time = (time + " second");
    }
    else {
    time = (time + " seconds");
       }
    document.form1.staytime.value = time;
    document.form1.submit();         //先进行提交事件
    alert('您在本页停留了' + time + '.谢谢!!');
    } </SCRIPT>
    </head>
    <body onUnload="bye()"><form id="form1" name="form1" action="你提交的asp.asp" methond="post/get">
    <input type=hidden id="staytime" name="staytime">
    </form></body>
    </html>