javascript - 如何确定 IE 是否耗尽了每个域的连接限制

标签 javascript internet-explorer-7

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

  1. 已达到连接限制,IE 尚未收到所有内容
  2. IE 已收到所有请求的响应,但正忙于呈现页面

如果任何 JavaScript 操作未完成(主要是 onload JavaScript 调用),IE 是否会显示忙碌图标?

感谢和问候, 阿维纳什

最佳答案

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

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

您可以将示例 html 保存到您的计算机并运行,但如果您从本地磁盘运行它,IE 将提示您使用黄色信息栏,您需要右键单击以允许它运行脚本。当 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>

关于javascript - 如何确定 IE 是否耗尽了每个域的连接限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362249/

相关文章:

html - ie7中的CSS位置

html - IE7 不会显示带有编码文件名的 bmp 文件

internet-explorer-7 - Windows Phone 7 IE 兼容性测试结果

css - p标签和输入标签之间有一个像素的差距

javascript - 修正了一些语法

javascript - 谷歌地图 API 无法正确显示 jQuery slideToggle

javascript - window.onload 函数仅在第一个加载页面上

javascript - 带有叠加层的图像映射在 IE 中不起作用

javascript - fetch catch return JSON 中位置 0 处的意外标记 U

javascript - 如何更改按钮上计数器的颜色?