Frage

Wenn Comet, oder Ajax Lange Pull-Techniken - ein iframe in der Regel verwendet wird. Und während das iframe für die lange Verbindung warten zu schließen, wird der Browser seine throbber dreht (der Fortschritt / Ladeanzeige).

Einige Websites, zum Beispiel etherpad.com zu machen, gelang es zu stoppen.

Wie sie es tun?

War es hilfreich?

Lösung

für einen Tag Nach dem Graben und eine Nacht in den Eingeweiden der internets, hier ist das, was ich kam mit:

  1. Server gesendet Ereignisse - Sehr cool, arbeitet zur Zeit nur in der Oper, sondern kann ein Teil von HTML5 und anderen Browsern kann es irgendwann unterstützen. Fügt einen neuen Element-Tag mit Content-Type von "application / x-dom-Event-Stream", die die Server Ereignisse auszulösen in dem Client DOM ermöglicht. Und es sollte nicht eine Fortschrittsanzeige zeigen, soweit ich verstehe. Es ist auch ein Arbeitsentwurf eines Standard, und nicht ein Hack wie die ganze iframe Kometen Sache.

  2. XMLHttpRequest - in Firefox und Safari, aber nicht in IE, kann es für langen Takt Laden der Seite verwendet wird, die Fragmente, wie sie auf jedem Fall erscheinen Readystatechange zu handhaben kann. Wird nicht Statusanzeige zeigen *. - siehe Kommentar unten

  3. ActiveXObject ( „Htmlfile“) - kann im Internet Explorer verwendet werden, um eine Seite / Fenster zu erstellen, die außerhalb des aktuellen Fensters Umfangs ist. Dies macht die Statusanzeige gehen weg! Die geladene iframe in einem unsichtbaren Browser sein wird.

Weitere Informationen zu Server-sent-Ereignisse:

Und mehr über die anderen beiden Techniken (auch erklärt, das Problem besser): * http://meteorserver.org/browser-techniques/

Noch mehr in der Tiefe über jede Technik und mehr Techniken:

Andere Tipps

Für mich ein setTimeout auf der Ajax-Anforderung ausgeführt wird gelöst alles. Als ich die Anfrage von document.ready lief, habe ich die „throbber of doom“. Aber mit setTimeout ist es nicht passieren. (Diese Korrektur auch für Chrome).

Nur für den Fall, dass Sie einige Beispiele benötigen, hat dieser Kerl eine Lösung geben firefox Problem zu lösen. http://www.shanison.com/?p=237

Ich hatte das gleiche Problem und die Lösung war Ajax zu verwenden anstelle von versteckten iFrame. Anstatt also iframe irgendwo auf der Seite zu generieren:

$("#chat .msg_list").prepend('<iframe id="hidden" src="chatFrame?id=$userId" frameborder="0" height="0" width="100%"></iframe>');

Ich habe Jquery Ajax-Aufruf iframe Inhalt in eine div geladen werden:

$('#chat #chat_comet').load('chatFrame?id=$userId');
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top