Javascript 如何识别IE是否耗尽了它';s每个域的连接限制

Javascript 如何识别IE是否耗尽了它';s每个域的连接限制,javascript,internet-explorer-7,Javascript,Internet Explorer 7,如果IE忙于页面加载,那么它通常会显示旋转图标,而不是favicon.ico。但如何区分以下几点呢 已达到连接限制,IE尚未收到所有内容 IE收到来自其所有请求的响应,但正忙于呈现页面 如果任何JavaScript操作未完成(主要是onloadJavaScript调用),IE是否会显示忙碌图标 感谢和问候, Avinash也许唯一的方法就是看看这样的东西,然后你就可以准确地跟踪IE在做什么,并且(有趣的时刻)计算一下 遗憾的是,我想不出其他办法 关于“1.已达到连接限制,IE尚未收到所有内容”这

如果IE忙于页面加载,那么它通常会显示旋转图标,而不是
favicon.ico
。但如何区分以下几点呢

  • 已达到连接限制,IE尚未收到所有内容
  • IE收到来自其所有请求的响应,但正忙于呈现页面
  • 如果任何JavaScript操作未完成(主要是
    onload
    JavaScript调用),IE是否会显示忙碌图标

    感谢和问候,
    Avinash

    也许唯一的方法就是看看这样的东西,然后你就可以准确地跟踪IE在做什么,并且(有趣的时刻)计算一下

    遗憾的是,我想不出其他办法

    关于“1.已达到连接限制,IE尚未收到所有内容”这一限制是在WinInet中施加的,我甚至没有尝试回答这个问题,因为我所能想到的解决问题的几乎所有方法(从页面本身)都涉及到可以进一步减少页面加载时间的方法。DanP关于Fiddler的建议很好,您可以为Fiddler编写一个扩展或一些自定义脚本,在任何给定时间处理对同一主机名的两个请求时记录日志,这样您就可以有一个日志了。否则,只需在fiddler中对其进行观察,看看是否有两个相同主机名的请求正在同时处理,但一般来说,请求完成得如此之快,以至于试图在fiddler中通过观察UI获得良好的体验可能会有问题

    关于“2.IE收到来自其所有请求的响应,但正忙于呈现页面”,听起来您想知道页面何时准备好供用户与之交互。事实上,IE并不同步执行这些任务,它在下载内容时呈现页面,用户可以在IE仍在忙着下载时与页面交互。因此,我所做的是在这里包含一个示例,它显示了如何判断Internet Explorer选项卡中的微调器图标何时切换到favicon。当document.readyState==“complete”时,微调器会消失,但是页面已准备好让用户在document.readyState==“interactive”上与其交互,它恰好位于document.body.readyState==“complete”之后,我不知道document.body.readyState==“complete”是否是document.readyState==“interactive”的原因但它们显然是一致的。但是,如果您确实想确定是否所有内容都已下载,DOM中的每个元素都有一个readyState属性,则可以枚举DOM以检查每个元素是否都有一个readyState==“complete”,以确定每个元素是否已完成下载和呈现

    可以保存到计算机并运行的示例html,但如果从本地磁盘运行,IE将用yello信息栏提示您,您需要右键单击以允许它运行脚本。当html正常运行时,您应该会看到javascript警报,您会注意到显示“document.readyState:interactive”的警报中微调器仍在旋转,但当显示“document.readyState:complete”的警报时,您会注意到微调器图标已消失。希望这有帮助

    <html>
    <head>
        <script language="javascript">
            document.onreadystatechange = function(e)
            {
                alert("Document State: " + 
                                 document.readyState + 
                                 "\nBody State: " + 
                                 document.body.readyState);
            };
        </script>
    </head>
    <body>
    Test Content
    <div id="placeToAddTo"></div>
    <script language="javascript" type="text/javascript">
        for(var i = 0; i < 1000; i++)
        {
            var obj = document.createElement("div");
            obj.innerText = "Div Number: " + i + " Document State: " 
                       + document.readyState + " Body State: " 
                       + document.body.readyState;
            document.getElementById("placeToAddTo").appendChild(obj);
        }
        alert("completed creating object");
    </script>
    </body>
    </html>
    
    
    document.onreadystatechange=函数(e)
    {
    警报(“文档状态:”+
    document.readyState+
    “\n正文状态:”+
    document.body.readyState);
    };
    测试内容
    对于(变量i=0;i<1000;i++)
    {
    var obj=document.createElement(“div”);
    obj.innerText=“Div Number:+i+”文档状态:
    +document.readyState+“正文状态:”
    +document.body.readyState;
    document.getElementById(“placeToAddTo”).appendChild(obj);
    }
    警报(“已完成创建对象”);
    
    谢谢danp。但是,您认为有没有任何编程方式来获取信息,比如一些javascript处理程序来获取连接池耗尽时有多少连接处于繁忙状态的信息,如果javascript调用处于无休止的循环中?我不知道-我想这是一个通过msdn挖掘的案例,看看是否有任何方法可以获得这些信息。也许有一些方法可以让你用一个小小的.net应用程序来实现。。但我只是在猜测。这听起来像是你不需要知道的事情,或者可以通过客户端代码优化来解决。