Loading gif-Bild wird nicht angezeigt in IE und chrome
Bin ich mithilfe von JQuery-ajax-call für das senden von synchronisierten Aufruf von server-und anzeigen wollen, ein be-Bild für diese Zeit.
Aber be-Bild sichtbar ist, in Firefox aber nicht in IE und chrome. Wenn ich Debuggen, habe ich festgestellt, dass im IE beim aufrufen von java-Skript, zum beenden der Anzeige von änderungen im browser, wie es Stoppt die DOM-und wenn das Gespräch beendet ist, es zeigt dann alle änderungen. Da zeigt ich dem laden-Bild auf ajax call mit und entfernen Sie es nach Abschluss des Anrufs wird die doe IE nicht alle Bilder angezeigt.
Aber wenn ich mit alert-box,es zeigt das lade Bild im IE, wie es halt der thread, bis wir darauf reagieren.
Gibt es eine Methode zum stoppen des java-script-Ausführung für eine Millisekunde, so dass IE Ausführung der halte-und be-Bild angezeigt.
Ich habe bereits versucht ajaxSend, ajaxComplete, ajaxStart, ajaxStop von JQuery und timer-Ereignis von java script, aber bekommt keine Lösung.
Jede Hilfe ist wertvoll, vielen Dank im Voraus.
- Ich habe mich um dieses problem im IE in der Vergangenheit, indem die Ajax-Aufruf in einer
setTimeout()
mit 1ms Verzögerung. In der Regel dann der IE die Seite aktualisieren, bevor Sie die timeout-callback, die startet die Ajax-Anfrage. Beachten Sie, dass, wenn die be-Bild nicht bereits im browser-cache kann es nicht geladen, in der Zeit angezeigt, bevor der Ajax-response zurück kommt. - Ich habe versucht, setTimeout (), aber es funktioniert nicht.
- Zeigen Sie Ihren code.
- Zeig den relevanten code..
- Nur so viel, wie das problem repliziert werden können. Sie nicht haben, um jeder Logik.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Zusammenhang mit XHR, synchron bedeutet nur, dass der browser einfriert, bis die Anforderung abgeschlossen ist. Wenn das, was Sie wollen, ist, um sicherzustellen, dass nur eine Anfrage ausgeführt wird, zu einem bestimmten Zeitpunkt, dann verwenden Sie Ihre eigene Flagge, um anzuzeigen, dass eine Anforderung in Bearbeitung ist.
Per definition die synchrone Flagge einer Anfrage bedeutet, dass jede andere Tätigkeit muss aufhören. Ich bin überrascht, dass es sogar funktioniert im Firefox, beim letzten mal habe ich versucht, dass es nicht funktioniert, aber das war vor langer Zeit. Also vergiss es, es gibt keine Möglichkeit, damit es funktioniert in allen Browsern. Sogar, wenn Sie die Verzögerung der Anforderung mit einem
setTimeout
, am besten du bekommst eine gefrorene browser mit einem nicht-animierte gif-Datei. Und die Nutzer mögen es nicht, wenn Sie frieren Ihren browser, vor allem, wenn die Anfrage vielleicht mehr als ein Bruchteil einer Sekunde.Nicht immer hängt der browser für die Sicherheit oder korrekte Funktionsweise bezogene Funktionen. Wenn Ihre Anwendung bekommen könnte gebrochen werden, wenn ein client nicht zwei Anträge parallel, dann haben Sie einen Fehler auf der server-Seite. Es gibt nichts, das verhindert, dass ein böswilliger Nutzer von parallelen Anfragen, die mit anderen tools als die normale Benutzeroberfläche.
Problem ist wahrscheinlich das "synchronisiert" Teil in deinem Eröffnungsbeitrag.
Öffnen Sie die Verbindung asynchron. Das hält den browser zu sperren, und es wird so funktionieren wie Sie es erwarten. (set async = true auf Ihre XmlHttpRequest - /activex-Objekt)
versuchen, zeigt das lade Bild am Anfang des ajax-jquery-Aufruf und verstecken Sie auf Erfolg-Ereignis
oder
können Sie verwenden Auszeit auch
Ich auch vor ähnlichen problem bei der Arbeit mit ajax, wie ich einige styles und UI während ajax-Aufruf, aber diese werden nicht angewendet UI und gleich als Sie sagte, dass, wenn wir setzen einige alert-es wird funktionieren, wie erwartet, bis OK nicht angeklickt für die alert -
Ich nicht erraten können, warum es passiert, aber Sie können die JQuery verwenden, um ein-oder Ausblenden, dass das Laden.... div
Hoffe, es wird funktionieren....
Ich hatte ein ähnliches problem und dann habe ich es aussortiert, mit dem Update-Panel in ASP.NET. Wenn Sie mit PHP oder eine andere Technologie haben, dann müssen Sie die Verwendung ajax-call. Wenn Sie nicht synchronisiert rufen Sie dann das lade Bild wird nicht angezeigt.
Ich habe ähnliche situation zu bewältigen, wenn Sie haben, um den synchronen Aufruf, den browser setzen die DOM-manipulation. Also wenn es absolut notwendig ist, halten mit der asynchronen Aufrufe.
Gibt es einen workaround für die Manipulation des DOM und zeigen ein element, bevor der ajax-Aufruf. Unter Verwendung der jQuery-animate(), und stellen Sie den ajax-Aufruf in der callback-für die animation komplett. Folgender code funktioniert bei mir:
Können Sie versuchen, führen Sie die ajax-synchron-Aufruf in den image-load-callback.
Etwas wie:
Dann fügen img DOM.
Hallo zu ändern versuchen ajax-Aufruf wie dieser seine Werke für mich
Ich verwendet, Sergiu Dumitriu als Basis. Ich async auf true und Hinzugefügt
Und es funktionierte für mich. Im Grunde habe ich meinen eigenen async:false " - Attribut.
In $.ajax-Aufruf müssen Sie hinzufügen, async: true. Folgender code funktioniert bei mir: