2010-12-06 6 views
6

Wenn IE mit dem Laden von Seiten beschäftigt ist, wird in der Regel anstelle von favicon.ico ein Symbol angezeigt. Aber wie zwischen folgendenWie erkennt man, ob der Internet Explorer die Limits für die Domänenverbindung erschöpft hat?

  1. Anschlussgrenzen zu unterscheiden, sind erreicht und IE noch nicht alle Inhalte empfangen
  2. IE erhielt Antwort von allen seinen Forderungen aber ist damit beschäftigt Rendern der Seite

Wird eine Show IE beschäftigt Symbol, wenn eine JavaScript-Operation nicht abgeschlossen ist (vor allem onload JavaScript-Aufruf?)

Danke und Gruß, Avinash

Antwort

0

Vielleicht wäre der einzige Weg, um etwas wie Fiddler zu betrachten - und dann können Sie genau verfolgen, was IE tut, und (Spaß mal) zählen.

Ich kann leider nicht auf andere Weise denken.

+0

Dank danp.Aber denkst du, gibt es irgendeine programmatische Möglichkeit, die Informationen wie einige Javascript-Handler zu erhalten, um den Status zu erhalten, wie viele Verbindungen beschäftigt sind, wenn Verbindungspools erschöpft sind, wenn JavaScript-Aufrufe in Endlosschleife sind? – avinash

+0

Nicht, dass ich mir dessen bewusst bin - ich denke, es ist ein Fall, in dem man msdn durchforstet und sieht, ob es irgendeinen Weg gibt, diese Information zu bekommen. Es könnte einen Weg geben, wie man es mit einer kleinen .net-App verbinden kann ... aber ich spekuliere nur. Es klingt wie die Art von Sache, die Sie nicht wissen sollten, oder könnte mit clientseitige Code-Optimierung gelöst werden. – dmp

1

In Bezug auf "1.Connection Grenzen sind erreicht und IE hat noch nicht alle Inhalte erhalten" diese Beschränkung ist in WinInet auferlegt, ich habe nicht einmal versucht, diese Frage zu beantworten, weil fast alle Möglichkeiten, die ich sogar denken könnte nähern Sie sich dem Problem (von der Seite selbst) beteiligten Methoden, die die Ladezeit der Seite weiter reduzieren würde. DanPs Vorschlag zu Fiddler ist ein guter Vorschlag. Sie könnten eine Erweiterung oder ein benutzerdefiniertes Skript für Fiddler schreiben, das protokolliert, wenn TWO-Anfragen an denselben Hostnamen zu einem bestimmten Zeitpunkt verarbeitet werden, sodass Sie ein Protokoll haben. Sonst geht es darum, es in Fiddler zu betrachten und nur zu schauen, ob zwei Anfragen desselben Hostnamens zur gleichen Zeit verarbeitet werden, aber im Allgemeinen enden die Anfragen so schnell, dass sie versuchen, ein gutes Gefühl davon in Geiger zu bekommen Wenn Sie nur die Benutzeroberfläche beobachten, kann das problematisch sein.

In Bezug auf "2.IE erhielt Antwort von allen seinen Anforderungen, aber ist beschäftigt, die Seite zu rendern" es klingt wie Sie wissen möchten, wenn die Seite für den Benutzer bereit ist, damit zu interagieren. Tatsache ist, dass IE diese Aufgaben nicht synchron ausführt, sondern die Seite während des Herunterladens von Dingen rendert und der Benutzer mit der Seite interagieren kann, während IE noch mit dem Herunterladen beschäftigt ist. Was ich getan habe, ist ein Beispiel, das zeigt, wie man erkennen kann, wenn das Spinner-Symbol auf der Registerkarte Internet Explorer zum Favicon wechselt. Der Spinner verschwindet, wenn document.readyState == "complete", aber die Seite ist für den Benutzer bereit, mit ihr auf document.readyState == "interactive" zu interagieren, was auch nach dem document.body.readyState == geschieht. complete ", ich weiß nicht, ob document.body.readyState ==" complete "ursächlich für document.readyState ==" interactive "ist, aber es scheint, dass sie übereinstimmen. Wenn Sie jedoch feststellen möchten, ob alles heruntergeladen wurde, verfügt jedes Element im DOM über eine readyState-Eigenschaft. Sie könnten das DOM potenziell auflisten, um zu überprüfen, ob jedes Element einen readyState == "complete" aufweist, um festzustellen, ob jedes Element heruntergeladen wurde und Rendern.

Das Beispiel HTML können Sie auf Ihrem Computer speichern und ausführen, aber wenn Sie es von der lokalen Festplatte ausführen, wird IE Sie mit der gelben Infozeile auffordern, und Sie müssen mit der rechten Maustaste klicken, damit das Skript ausgeführt werden kann . Wenn der HTML-Code ordnungsgemäß ausgeführt wird, sollten Sie JavaScript-Warnungen sehen. Sie werden in der Warnung "document.readyState: interactive" feststellen, dass sich der Spinner noch dreht. Wenn jedoch die Warnung "document.readyState: complete" angezeigt wird, werden Sie bemerken Das Symbol "Spinner" wurde entfernt. Hoffe das hilft.

<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> 
Verwandte Themen