Die Methode jQuery .height kann in iOS Safari keine Höhe festlegen

9

Ich traf sehr seltsames Verhalten auf iOS Safari 7 +

Ich benutze flexslider und aus irgendeinem Grund funktioniert es nicht, wenn ich auf einen Link klicke und auf die Seite gehe, die ich benutze. Wenn ich den Link in der Adressleiste kopiere und füge, funktioniert es. Es funktioniert auch auf allen anderen gängigen mobilen Browsern. Hier ist js ich verwendet, um das Problem zu debuggen:

%Vor%

Chrome protokolliert erwartete Werte: 577, 187, 187, 187px

Aber Safari protokolliert sehr ungewöhnliche Werte: 682, 195, 0, 0px

Wenn ich das generierte HTML sehe, ist es absolut gleich für die beiden Browser:

%Vor%

Der Unterschied liegt nur in der Höhe, in der Safari stattdessen 195px anzeigt. Dies geschieht nur auf iPhone Safari, und nicht in einem anderen gängigen Browser.

Jede Hilfe wird geschätzt.

BEARBEITEN

Nach einigen Experimenten habe ich herausgefunden, dass dies nur passiert, wenn ich auf a tag klicke, das "flippbare" Effekte verwendet. Wenn ich dieses a -Tag e.stopPropagation(); anlege, verschwindet dieses Problem. Ich weiß, dass es für dieses Verhalten keine Logik gibt, weil das Problem auf einer anderen Seite als dieser ist, aber das sind die Fakten.

BEARBEITEN 2

Hier ist ein weiterer Code, der zeigt, wie flexslider aufgerufen wird:

%Vor%

Hier ist ein Link mit Clip mit dem Verhalten im Gerätesimulator (iPhone 6+ in diesem Fall): Ссылка

Beachten Sie, dass sich Safari in den ersten Schritten im Geräteemulatormodus befindet und die letzten Tests im Safari-Emulatormodus ausgeführt werden. Ich bin so verwirrt, warum nur auf Geräten dieses Verhalten auftritt.

    
bksi 19.05.2015, 01:13
quelle

1 Antwort

1

Wenn Sie diese Art von Problem haben, ist die eindeutige Lösung, alle jQuery-Funktionen mit Hilfe von chain aufzurufen:

%Vor%

Eine andere Lösung besteht darin, einen Timer zu verwenden, der auf 0 gesetzt ist, damit der Maler das DOM aktualisieren kann.

%Vor%     
Luca Colonnello 26.05.2015 20:35
quelle

Tags und Links