如果 IE 忙于加载页面,那么它通常会显示漩涡图标而不是 favicon.ico
。但是如何区分如下
- 已达到连接限制,IE 尚未收到所有内容
- 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/