Mobile Safari $(window).hauteur() de la barre d'URL de divergence
Je suis en train de définir un fixe div à 100% de la hauteur de la fenêtre. Mais le navigateur safari mobile ne détecte pas la bonne hauteur de la fenêtre. Il pense toujours que la barre d'URL est une partie de l'équation.
C'est ce que j'utilise actuellement, mais il ne tient pas compte de la barre d'URL.
$(function(){
$(document).ready(function(){ //On load
alert($.browser);
$('#right-sidebar').css({'height':(($(window).height()))+'px'});
});
$(window).resize(function(){ //On resize
$('#right-sidebar').css({'height':(($(window).height()))+'px'});
});
});
J'ai rencontré ce même problème, mais a trouvé un pur CSS solution grâce à question.
OriginalL'auteur Ethan H | 2013-01-17
Vous devez vous connecter pour publier un commentaire.
Tldr
Si vous voulez juste pour interroger la hauteur de la fenêtre, de la croix-navigateur, et être fait avec elle, l'utiliser jQuery.documentSize et appel
$.windowHeight()
. Pour la mise en œuvre de votre propre solution, lisez la suite.Quand utiliser jQuery ou la
clientHeight
du documentde jQuery
$(window).height()
est un wrapper pourdocument.documentElement.clientHeight
. Il vous donne de la hauteur de la fenêtre d'affichage, à l'exclusion de l'espace couvert par navigateur, les barres de défilement. En général, il fonctionne très bien et jouit d'une quasi-universelle, prise en charge du navigateur. Mais il y a bizarreries sur mobile, et dans iOS en particulier.Dans iOS, la valeur de retour prétend que l'URL et les barres d'onglets sont visibles, même si elles ne le sont pas. Ils se cachent dès que l'utilisateur fait défiler l'écran et le navigateur commutateurs d'INTERFACE minimale. Hauteur de la fenêtre est ont augmenté de près de 60px dans le processus, et c'est pas reflète dans la
clientHeight
(ou jQuery).La
clientHeight
retourne la taille de la fenêtre d'affichage à disposition, pas de la fenêtre d'affichage visuel, et ne reflètent donc pas le zoom de l'état.Donc... pas tout à fait aussi grand sur les mobiles.
Quand utiliser
window.innerHeight
Il y a une autre propriété que vous pouvez interroger:
window.innerHeight
. IlLe dernier point signifie que vous ne pouvez pas il suffit de le déposer en tant que remplaçant. Aussi, il n'est pas pris en charge dans IE8, et brisé dans Firefox avant FF25 (octobre 2013).
Mais il peut être utilisé comme un remplacement sur mobile parce que les navigateurs mobiles présente des barres de défilement, à titre temporaire, de superposition qui ne consomment pas d'espace dans la fenêtre d'affichage -
window.innerHeight
etd.dE.clientHeight
retourner la même valeur à cet égard.Cross-browser solution
Donc une solution de navigateur, pour trouver la vraie hauteur de la fenêtre, les œuvres de ce genre (pseudo-code):
Le piège ici est de savoir comment déterminer la taille (largeur) de la barre de défilement pour un navigateur donné. Vous avez besoin d'exécuter un test pour elle. Il n'est pas particulièrement difficile - avoir un regard sur ma mise en œuvre ici ou la original par Ben Alman si vous le souhaitez.
Si vous ne voulez pas passer votre propre, vous pouvez également utiliser un composant de la mine - jQuery.documentSize - et être fait avec un
$.windowHeight()
appel.Merci!!!!
OriginalL'auteur hashchange
Cela est dû à un bogue dans jQuery .hauteur() la méthode.
Pour obtenir la bonne hauteur, vous pouvez utiliser:
Assurez-vous que vous surtout de la croix-navigateur compatible, vous pouvez le faire:
Je dis surtout que cela va commencer à se comporter drôle si il y a une barre de défilement inférieure.
OriginalL'auteur Jai
Voici comment j'ai pensé à elle. Ses un processus en deux étapes.
Étape 1 - Vérifiez si l'appareil est un iPhone ou un iPod.
Étape 2 - Si c'est pour vérifier si le navigateur est safari
Puis utilisez le mobileSafari variable chaque fois que nécessaire pour exécuter le navigateur safari mobile code spécifique.
En commençant par le premier dispositif exclut les iPads et les ordinateurs de bureau, etc, qui peut également exécuter Safari. Puis, la deuxième étape règles de Chrome et d'autres navigateurs qui peuvent potentiellement exécuter sur ces appareils.
Voici un plus en profondeur la répartition de pourquoi je l'ai fait de cette façon - http://www.ethanhackett.com/?blog=window-height-100-on-mobile-safari-coding-solution
OriginalL'auteur Ethan H
Si mobile safari est le navigateur uniquement de vous donner le problème, vous pouvez toujours cible que navigateur et moins de l'URL de la hauteur de la barre à partir de votre hauteur totale. Vous pouvez trouver l'URL de la barre de hauteur de piste et erreur, je n'ai aucune idée de quelle taille il est
OriginalL'auteur Huangism