Anzeige * Browser * Ladeanzeige (wie bei einem Postback) bei Ajax-Anrufen

8

Beispiel: Gehen Sie zu Ihrer Facebook-Seite, scrollen Sie am Ende der Seite, Facebook lädt mehr Pinnwand-Posts asynchron . Oder klicken Sie einfach auf ein Bild in Ihrer Pinnwand. Der Bilddialog (mit Kommentaren und größerem Bild) wird ebenfalls asynchron geladen. (Sie können die GET-Anfragen mit Firebug sehen).

Aber wenn Sie auf die Registerkarte Firefox schauen, sehen Sie den Lade-Indikator, genau wie bei einem Postback.

Ich weiß, dass dies erreicht werden kann, indem man IFrame benutzt und seine src ändert. Genauso wie iGoogle . Aber ich bin mir nicht sicher, ob Facebook einen IFrame verwendet, um zusätzliche Pinnwand-Posts zu laden. Gibt es einen anderen Weg, dies zu erreichen?

Update : Mit "ladender Indikator" meinte ich keinen AJAX-Indikator.
Wie schon erwähnt, ändert sich die Browser-Anzeige (die auf der linken Seite einer Registerkarte, die uns anzeigt, ob die Seite geladen wird) zum Laden, als wäre es ein Postback.

    
Kamyar 16.02.2012, 16:09
quelle

3 Antworten

6

Nicht AFAIK. Meine Vermutung ist, dass sie den IFrame src wahrscheinlich auf eine Ajax-Methode setzen und wenn sie geladen werden, verschieben sie den Inhalt in ein div (oder ein anderes Element).

    
Azade 06.03.2012, 06:46
quelle
5

Es kann mit einem iframe gemacht werden. Kurz gesagt, Sie hängen einen versteckten iFrame an:

%Vor%

Es muss eine Seite laden, die nicht geladen wird. Möglicherweise auf der Website-eigenen Domain, da der Browser tatsächlich waiting for domainname.com in der Statusleiste anzeigt.

In der Datei domainname.com/loading/index.php setzen Sie:

%Vor%

Und entfernen Sie den iframe, wenn Sie fertig sind:

%Vor%

Es ist nicht ideal, wenn man bedenkt, dass dies eine zusätzliche Anfrage ist. Ein paar Gründe:

  • Ihr Server würde lange Anfragen haben, die sich auf die Leistung auswirken könnten
  • Der Browser würde eine der wenigen gleichzeitig verfügbaren Verbindungen verwenden, wodurch möglicherweise verlangsamt wird, was gerade geladen wird
  • macht Animationen in meinem Fall stottern (Chrome 27 / OSX, requestAnimationFrame).

über Slow-Loading-Technik
 über Ссылка

    
bfred.it 25.05.2013 02:35
quelle
3

Ich habe dafür eine jQuery-basierte Bibliothek entwickelt, die in einigen Situationen eine brauchbare Lösung sein sollte (self-origin) und in einigen Desktop-Browsern erfolgreich ausgelastete Indikatoren auslösen könnte (zumindest modern Chrome und Firefox, und seltsamerweise auch IE8 aber wahrscheinlich nicht IE9, und definitiv nicht Safari oder die meisten mobilen Browser).

Lautes JSON

Im Grunde verwende ich den iframe-Ansatz, um "busy" -Anzeigen auszulösen, aber ohne künstlich eine separate "blockierte" Seite zu treffen: Stattdessen verwendet er nur einen benutzerdefinierten $ .ajaxTransport, um einen versteckten iframe zu durchlaufen und dann den JSON Antwort zurück. Das Ergebnis ist, dass der Browser Ladeanzeigen anzeigt, die in direktem Zusammenhang mit der Anfrage stehen, die Sie ausführen: keine zusätzlichen HTTP-Anfragen. Sie können im Grunde nur das Plugin installieren und dann entscheiden, welche AJAX-Anfragen laut sein sollen und welche nicht, nur indem Sie den Parameter dataType ändern.

Als Nebenbemerkung ist die Tatsache, dass das Laden von Inhalt in iframes KEINE UI-Rückmeldung an den Benutzer in Safari und IE9 auslöst, einfach bizarr .

    
Dtipson 27.11.2014 03:08
quelle