大家好:          我问个很基本的问题:希望能够得到尽快回复,谢谢!          公司希望能够架设个asp.net的server用来测试(asp.net我是新手), 通过访问页面来自动计算目前的上网速度. 我的预期处理方式期望:在Page_Load中记录个初始时间time1, 然后在Page_LoadComplete定义个时间time2, 然后拿整个页面的大小除以(time2-time1)
得出客户端当前的每秒下载速度.实际: 在客户端好象是大图片还没来得及加载完毕,Page_LoadComplete就已经调用, 并且传出数据, 那么这样的数据肯定不准了.
所以我希望能够有高手解答这个问题, 我很困惑,谢谢!
ps: 计算客户端页面加载从开始到完毕的时间 如果有javascript的话方法1: 用(document.readyState   !=   "complete")来判断, 可是这个只能用在
IE, FireFox是不支持的.方法2:用Ajax实现,可是那个东西我很困惑, 看不懂.所以考虑能否用asp.net服务器端(C#)相关的页面函数来辅助判断. 如果有哪位前辈有相关的解决思路, 还请告之一二, 指点迷津, 万分感谢!

解决方案 »

  1.   

    不用这样
    代码是逐行读取的
     你在load最开始定义time1, load末尾定义time2
    就行了。
    剩下的思路和你一样
      

  2.   

    可以用jQuery的方法
    $(document).ready(function()
    {
    // Your code here...
    });原文引用:
    window.onload()是传统javascript里一个能吃苦耐劳的家伙。它长久以来一直被程序员们作为尽快解决客户端页面载入问题的捷径。 但有时候等待页面载入还是不够快。 只有少数大型的图片文件会被快速的载入,而大部分大型的图片文件会使window.onload()载入的很慢。所以当我为最近的网络营销创建一个web应用程序的时候我不得希望更快一点。有一些围绕window.onload()的新研究(比如brother cake)的代码是一种快速的方式。如果你需要,可以试试。 但是如果你要做一些DOM(文档对象模型)javascript的编程,那么你为什么不试试jQueryjQuery有一个用来作为DOM快速载入javascript的得心应手的小函数,那就是ready… 他在页面加载完成之后执行。原文地址:
    http://wiki.jquery.org.cn/doku.php?id=jquery%E4%B8%AD%E6%96%87%E6%8C%87%E5%AF%BC:15%E5%A4%A9%E5%AD%A6%E4%BC%9Ajquery
      

  3.   

    if(document.addEventListener)//FF
    {
        document.addEventListener("DOMContentLoaded",load,null);
    }else
    {
        document.onreadystatechange=function() //IE
        {
            load(1);
        }
    }function load()
    {     if(arguments[0]!=1||document.readyState=="complete")
         {
             alert("Page Loaded");
         }
    }
      

  4.   

    cc123456, 你好,很感谢你的回复.你的意思是不是说: LoadComplete里面的内容 等价于 写在load末尾? 那么我在load最后写就可以了,然后不必再写在LoadComplete中?还有: 请问 图片加载完 和 图片下载完 不是同一个概念么? 意思是: 图片从服务器端完全下载到客户端, 此时是不是也在IE中加载完?
    有没有合适的方法来判断图片加载完毕?(最好能够兼容浏览器),谢谢!
      

  5.   

    maco_wang 你好, 感谢你的回复!我大致搜索了下jQuery,好象跟Ajax相关, 现在有想到Ajax就头疼, 以前稍微看了下方面的书很是迷惑.现在我现在时间有限, 来不及去学习熟悉一个不懂的成熟的框架,以后有时间一定好好研究下,再次感谢你!
      

  6.   

    CutBug 你好:你贴上来的代码看起来很不错,应该是个很好的解决方法: 可以我贴到我代码里为什么不能用呢?IE 提示"已完毕,但是页面有错误", FF正常加载完毕,可是没有alert出来. 请问是怎么回事?下个回复贴上我的页面源码, 请帮忙查看以下,谢谢!
      

  7.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="spictest.aspx.cs" Inherits="spictest" %><!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 id="Head1" runat="server">
        <title>small picture test page</title>
           <script language = "JavaScript">
     mydate=new Date();
     var minutes=mydate.getMinutes().toString();
     var seconds=mydate.getSeconds().toString();
     var hours=mydate.getHours().toString();
     var miliseconds=mydate.getMilliseconds().toString();    
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            &nbsp;
            <asp:Label ID="Label4" runat="server" ForeColor="#8080FF" Text="Size:"></asp:Label>
            &nbsp;&nbsp;
            <asp:Label ID="Label2" runat="server" Text="Label" Visible="False" Width="113px"></asp:Label>
            &nbsp; &nbsp;<asp:Label ID="Label5" runat="server" ForeColor="#8080FF" Text="Interval:"></asp:Label>
            &nbsp;
            <asp:Label ID="Label3" runat="server" Text="Label" Visible="False" Width="62px"></asp:Label>
            <asp:Label ID="Label6" runat="server" ForeColor="#8080FF" Text="Rate:"></asp:Label>&nbsp;
            <asp:Label ID="Label7" runat="server" Text="Label" Width="239px" Visible="False"></asp:Label><br />
            &nbsp;
            <asp:Label ID="Label1" runat="server" Text="Downloading..." Width="183px" ForeColor="#00C0C0"></asp:Label>&nbsp;<br />
            &nbsp;
            <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Default.aspx">Return Main Page</asp:HyperLink>
            <br />
            <br />
            <asp:Image ID="Image1" runat="server" ImageUrl="~/spic.jpg" /></div>
        </form>
        
        <script language="JavaScript">
     
     if(document.addEventListener)//FF
    {
        document.addEventListener("DOMContentLoaded",load,null);
    }else
    {
        document.onreadystatechange=function() //IE
        {
            load(1);
        }
    }function load()
    {     if(arguments[0]!=1||document.readyState=="complete")
         {
             alert("Page Loaded");
         }
    }
     
         
       ///      window.location="scalc.html?"+time+"&"+time2+"&"+speed;               
      }  
        </script> 
    </body>
    </html>
      

  8.   

      
      ///      window.location="scalc.html?"+time+"&"+time2+"&"+speed;              
      }  
    你这里多了个"}",去掉就正确了
      

  9.   

    CUTBUG高人,学习了。我觉得作者的没有搞清楚页面加载时发生的事件。
    如下:Page 执行中将按照如下顺序激活事件:Page.PreInit
    Page.Init
    Page.InitComplite
    Page.PreLoad
    Page.Load
    Page.LoadComplete
    Page.PreRender
    Page.PreRenderComplete
      

  10.   

    Page.LoadComplete是在服务器端发生的。如果页面上有<ScriptManager>
    那么会自动调用<script type="text/javascript">function pageLoad(){....}</script>内的pageLoad()方法。这才是客户端的动作。
      

  11.   

    OK. 用CutBug的方法搞定!谢谢 CutBug!  同时谢谢各位! 结帖!