jQuery/JS, iOS 4 und $(document).Höhe() Probleme
Ich habe in ein seltsames Problem mit dem, was scheint zu sein, verschiedene Versionen von Webkit-Browsern. Ich versuche, die position eines Elements auf die Mitte des Bildschirms, und führen Sie die Berechnungen, die ich brauche, um verschiedene Abmessungen, insbesondere die Höhe des Körpers und der Höhe des Bildschirms. In jQuery habe ich mit:
var bodyHeight = $('body').height();
var screenHeight = $(window).height();
Meine Seite ist in der Regel viel größer als die tatsächliche viewport, also, wenn ich 'alert', die Variablen, bodyHeight sollte am Ende als groß, während "screenHeight" konstant bleiben soll (Höhe des browser-viewport).
Dies ist wahr in
- Firefox
- Chrom-15 (whoa! Wann hat Chrome bekommen auf die version 15?)
- Safari auf iOS5
Dies ist NICHT arbeiten in:
- Safari auf iOS4
- Safari 5.0.4
Auf die beiden letzteren $(window).height();
gibt immer den gleichen Wert wie $('body').height()
Denken es war vielleicht ein jQuery-Problem, tauschte ich aus dem Fenster Höhe für window.outerHeight
aber auch nicht die gleiche Sache, so dass ich denke, dies ist tatsächlich eine Art von webkit-problem.
Hat jemand lief in dieser und wissen, einen Weg, um dieses Problem?
Dinge zu komplizieren, ich kann nicht scheinen zu replizieren diese in der isolation. Zum Beispiel: http://jsbin.com/omogap/3 funktioniert einwandfrei.
Habe ich festgestellt, es ist kein CSS-Problem, also vielleicht gibt es andere JS Unwesen auf diesem bestimmten browser brauche ich, um zu finden.
$(document).height()
?das erzeugt einen Wert etwas höher als
$('body').height()
hmm.. muss den Polstern ... look at james.padolsey.com/javascript/get-document-height-cross-browser... (Fall)
aber ich brauche nicht die Dokument-Höhe. Ich brauche die Höhe des Viewports.
Dieser link etwas hilfreich, aber. Es ist mit
document.documentElement.clientHeight
- und das scheint genau zu schnappen, den viewport. Untersucht einige mehr...InformationsquelleAutor DA. | 2011-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich ve wurde kämpfen mit diesem für eine sehr lange Zeit (wegen bug von meinem plugin) und ich habe den Weg gefunden, wie man die richtige Höhe der Fenster in Mobile Safari.
Funktioniert es einwandfrei, egal welche zoom-Stufe ist ohne die Subtraktion der Höhe der Bildschirm mit vordefinierten Höhe des status-bars (das könnte sich in Zukunft ändern). Und es funktioniert mit iOS6 fullscreen-Modus.
Einige tests (auf dem iPhone mit der Display-Größe (320 × 480), im landscape-Modus):
Hier ist, wie Höhe festgestellt wird:
Solche Technik hat nur einen Nachteil: es ist nicht pixel perfekt, wenn die Seite vergrößert ist (weil
window.innerHeight
gibt immer gerundeter Wert). Es gibt auch falschen Wert wenn Sie den zoom in der Nähe der oberen Leiste.Ein Jahr vergangen, seit du diese Frage gestellt, aber trotzdem hoffe, das hilft! 🙂
InformationsquelleAutor Dmitry Semenov
Es ist 2015, wir sind bei iOS 8 jetzt. iOS 9 ist bereits um die Ecke. Und das Problem ist noch bei uns. Seufz.
Implementierte ich eine cross-browser-Lösung für die Fenster-Größe in jQuery.documentSize. Es bleibt frei von jeder Art von browser-sniffing und wurde stark unit-getestet. Hier ist, wie es funktioniert:
$.windowHeight()
für die Höhe der visuelle viewport. Das ist die Höhe von der Bereich, den Sie tatsächlich sehen, in den Arbeitsbereich an der aktuellen zoom-Stufe, die in CSS-Pixel.$.windowHeight( { viewport: "layout" } )
für die Höhe der layout-viewport. Das ist die Höhe, die den sichtbaren Bereich hätte bei 1:1 zoom - die "original-Fenster-Höhe".Wählen Sie einfach den entsprechenden viewport für Ihre Aufgabe, und Sie sind fertig.
Hinter den kulissen, die Berechnung folgt ungefähr der beschriebenen Verfahren in der Antwort von @DmitrySemenov. Ich habe geschrieben über die Schritte an anderer Stelle auf, SO. Check it out, wenn Sie sind interessiert, oder haben Sie einen Blick auf die Quellcode.
$.windowHeight( { viewport: "layout" } )
ist, was repariert das iphone bei mir die Probleme.Vielen Dank für das feedback.
InformationsquelleAutor hashchange
Ich hatte ein ähnliches problem. Es hatte zu tun mit 2 Sache:
Box-sizing CSS3-Eigenschaft:
In der .Höhe() jQuery-Dokumentation fand ich dies:
Dies können
$('body').height()
.Dokument bereit, vs Fenster.laden
$(document).ready()
wird ausgeführt wenn das DOM bereit ist, für die JS, aber es ist möglich, dass die Bilder noch nicht fertig geladen ist doch. Mit$(window).load()
behoben mein problem. Lesen Sie mehr.Ich hoffe, das hilft.
InformationsquelleAutor El Cultivo
Versuchen Sie dies :
InformationsquelleAutor NicolasBernier
Cross-browser-Lösung ist festgelegt, dass durch jQuery
Diese Eigenschaft verwenden:
$(window).height()
Dieser Rückgabewert ein int-Wert, repräsentiert die Größe der sichtbaren Höhe des browser in Pixel.
Scheint immer noch off - Mai 2014 - und es ist ein 'wontfix' bei jquery. bugs.jquery.com/ticket/6724
Der Punkt ist, dass es einen bug in jQuery, so dass
$(window).height()
funktioniert nicht in iOS.InformationsquelleAutor gsubiran