Zur Navigation

jquery show() geht nur im Firefox [2]

11 Horst_Braun

Hallo,

jawohl, ein Alert funktioniert an jeder Stelle.

Die Caches lösche ich vor jeden Versuch.

Hier kannst du es live sehen:
Servietten bedrucken

Dazu den Generator starten. Dann kannst du einfach ein Bild in die Serviette ziehen und auf Vorschau klicken. Kommt im in FF das Loading Bild. Im IE bzw. Chrome kommt nichts.

Wenn du mehrere Bilder rein setzt, dann muss er länger rechnen und du siehst das Bild deutlich länger (im FF).

MfG

16.03.2015 13:29

12 Jörg

Sowohl im Chromium 41 (enspricht Google Chrome 41) als auch im IE 9 konnte ich nach dem Klick auf den Vorschau-Button den Text "Speichere... Bitte warten" und darunter das Lade-Icon sehen. Beim IE nur kurz, weil die Vorschau schnell da war.

16.03.2015 14:46

13 Horst_Braun

Das kommt nur kurz bevor er fertig ist. Du hast du Bilder klein gelassen, da muss er nichts rechnen und er ist sofort fertig uns bringt das Symbol kurz.

Am besten du nimmst das Bild mit den vielen Herzen und ziehst es auf die komplette Serviette. Da hat er zu tun.

EDIT: Das mit den vielen roten Herzen :-)

16.03.2015 14:50 | geändert: 16.03.2015 14:59

14 Jörg

Ja. Es scheint jedenfalls so, dass in Chromium die Vorschau wesentlich schneller angezeigt wird als in Firefox. Das Problem, dass das Lade-Icon gar nicht angezeigt wird, kann ich allerdings mit keinem Browser reproduzieren.

Ist es denn bei dir so, dass du das Ladebild auch dann nicht siehst, wenn die Vorschau länger auf sich warten lässt?

... oder meinst du das Lade-Bild links oben in der Serviette beim Größer-Ziehen des Bildes?

16.03.2015 15:05 | geändert: 16.03.2015 15:07

15 Horst_Braun

Im Firefox kommt das Ladebild immer und sofort nach dem Klicken.

Im Chrome und im Firefox kommt das Bild nur ganz kurz bevor die Vorschau erscheint.

Das trifft auf beide Bilder zu. Also das Loading bei Klick auf Vorschau und das Loading beim Bilderverändern.

Am besten sieht man das, wenn man z.B. dieses einfache Beispiel erzeugt:
http://www.servietten-deko.de/videos/1.png

16.03.2015 15:18

16 Jörg

Im Chrome und im Firefox kommt das Bild nur ganz kurz bevor die Vorschau erscheint.

Du meinst im Chrome und IE?

Dann funktioniert das Einblenden via show() ja grundsätzlich. Die Frage ist dann nur, warum der Ladebalken nur so kurz angezeigt wird.

Hier gibt es mehrere Möglichkeiten:

1. bei Chrome / IE erscheint die Vorschau viel schneller, entsprechend wird der Ladebalken auch nur kurz angezeigt

hier würde ich nicht unbedingt von einem Problem reden - wenn die Vorschau zackig lädt, dann braucht's doch auch keinen Ladebalken?

2. der Ladebalken erscheint mit einer größeren Verzögerung als in Firefox

da würde ich mal testen, ob sich was ändert, wenn du das show() schon vor dem $.ajax() ausführst, statt in dessen beforeSend Callback-Funktion

3. der Ladebalken wird zu früh ausgeblendet

hier würde ich testweise mal das fadeOut() weglassen

Im Chrome und im Firefox kommt das Bild nur ganz kurz bevor die Vorschau erscheint.

Das wäre dann wohl 2.?

16.03.2015 17:35 | geändert: 16.03.2015 17:37

17 Horst_Braun

Wenn ich fadeOut(), dann wir das "Loading" nicht mehr ausgeblendet. Mehr nicht, weil ja bei allen Browsern früher oder später erscheint (auch wenn nur sehr kurz)

Wenn eine Vorschau z.B. 20 Sekunden dauert (wie im Beispiel des Bildes oben), dann erscheint im Chrome und IE 19 Sekunden nichts und dann kurz das "Loading". Im FF kommt es sofort beim Klicken.

Auch wenn ich ganz oben in der Funktion das show() setze, dann kommt im Chrome/IE nichts.

Irgendwie komisch.

MfG

16.03.2015 21:26

18 Jörg

Bei mir werden gar keine Bilder in der Vorschau geladen

Die Bild-URLs sehen so aus:

<img width="120px" height="120px" src="/bedrucken/img/../img/customized_tshirts/" alt="1" style="...">

Da fehlt der Dateiname - zudem würde ich das "/img/../img/" besser als ein einfaches "/img/" wiedergeben

17.03.2015 10:03

19 Horst_Braun

Hallo Jörg,

damit hast du das Hauptproblem gefunden. Wenn die Bilder zu groß (also irgendwie zu komplex) werden, dann erzeugt das System keine Bilder, welche ich dort als Vorschau ausgeben kann.

Wenn man einfach Bilder nimmt dann geht alles gut. Auch mit dem Umstieg auf Imagick 6.7.1 bleibt das Problem bestehen.

Irgendwie scheint er sich da zu verschlucken bzw. macht ein "convert" bevor er mit dem Letzten fertig ist.

MfG


17.03.2015 10:15

20 Jörg

Es liegt vermutlich an dieser Option:

                async:false,

Siehe auch diesen Thread auf Stack Overflow:

http://stackoverflow.com/questions/12375218/jquery-ajax-with-async-set-to-false-prevents-previous-display-changes-in-chrome

Probier mal die erste Lösung von Guffa, d.h. den ajax() Aufruf in einen setTimeout Block setzen, und den Aufruf von show() davor - also so in etwa:

function ajaxSave()                                                             
{                                                                                  
    $('#login_status_flag').val('Login');                                          
    $(".dvLoading").show();                                                        
    window.setTimeout(function() {                                                 
        $.ajax({                                                                   
            /* ... */                                                              
        });                                                                        
    }, 0);                                                                         
} 

... und wenn das nicht hilft, den Code so umschreiben, dass er ohne "async:false" funktioniert

17.03.2015 17:56 | geändert: 17.03.2015 18:01