Utilisation de jQuery Pour Obtenir la Taille de la Fenêtre d'affichage
Comment faire pour utiliser jQuery pour déterminer la taille de la fenêtre d'affichage du navigateur, et à détecter à nouveau cette si la page est redimensionnée? J'ai besoin de faire un IFRAME taille dans cet espace (à venir en un peu sur chaque marge).
Pour ceux qui ne le savent pas, le navigateur de la fenêtre d'affichage n'est pas la taille du document/page. C'est la partie visible de la taille de votre fenêtre avant de la faire défiler.
- Aucune idée de la façon d'obtenir la zone qui est visible sur les appareils de l'écran, et pas seulement ce qu'il peut faire défiler? Je vois $(window).hauteur() pour retourner la totalité de la largeur du document, et non pas la partie qui est en train de zoomer. Je veux savoir combien est visible une fois le zoom est appliqué.
- appelsiini.net/projects/viewport Cela devrait le faire! 🙂
- Ce n'est pas une réponse directe à la question, mais peut être pratique pour ceux qui veulent manipuler les sélecteurs en fonction de leur position & visibilité par rapport à la fenêtre: appelsiini.net/projects/viewport (plugin)
InformationsquelleAutor Volomike | 2010-06-15
Vous devez vous connecter pour publier un commentaire.
Pour obtenir la largeur et la hauteur de la fenêtre d'affichage:
événement de redimensionnement de la page:
innerWidth
/innerHeight
est plus correct d'utiliser (couvrant le zoom).DOCTYPE
déclaration , par exemple<!DOCTYPE html>
.$( window ).width()
et$( window ).height()
retour de la largeur et de la hauteur, respectivement, de la fenêtre d'affichage.$( document ).width()
et$( document ).height()
retour du document mesures. C'est en fonction de l'API jQuery.Vous pouvez essayer fenêtre d'affichage des unités de (CSS3):
Prise en charge du navigateur
1. Réponse à la question principale
Le script
$(window).height()
fonctionne bien (montrant la fenêtre d'affichage de la hauteur et de ne pas le document avec le défilement de la hauteur), MAIS il faut que vous placez correctement la balise doctype dans votre document, par exemple, ces doctypes:Pour le HTML 5:
<!DOCTYPE html>
Transitoire HTML4:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Probablement le défaut doctype supposé par certains navigateurs est tel, que
$(window).height()
prend le document de la hauteur et de ne pas le navigateur de la hauteur. Avec le doctype de la spécification, il est résolu de manière satisfaisante, et je suis sûr que vous peps permettra d'éviter "l'évolution de défilement-overflow hidden et puis de nouveau", qui est, je suis désolé, un peu sale tour, spécialement si vous n'avez pas de document sur le code pour l'avenir du programmeur d'utilisation.2. Une autre astuce, note de côté:
En outre, si vous faites un script, vous pouvez inventer des tests pour aider les programmeurs à l'aide de vos bibliothèques, permettez-moi d'inventer un couple:
$(document).ready(function() {});EDIT: à propos de la partie 2, "Un petit truc en plus, note de côté":
@Machiel, hier dans les commentaires (2014-09-04), était tout à fait à droite: la vérification de l' $ ne peut pas être à l'intérieur de l'événement ready de Jquery, car nous sommes, comme il l'a souligné, en supposant que $ est déjà défini. MERCI POUR CETTE remarque, et s'il vous plaît, le reste de vous, les lecteurs, corriger cet, si vous avez utilisé dans vos scripts. Ma suggestion est la suivante: dans vos bibliothèques mettre un "install_script()" fonction qui initialise la bibliothèque (mettre toute référence à $ l'intérieur d'une telle fonction init, y compris la déclaration de prêt()) et AU DÉBUT de ces "install_script()" fonction, vérifiez si le $ est définie, mais de faire tout indépendant de JQuery, votre bibliothèque peut "diagnostic lui-même" lorsque JQuery n'est pas encore défini. Je préfère cette méthode plutôt que de forcer la création automatique de JQuery en l'amenant à partir d'un CDN. Ceux sont de petites notes de côté pour aider les autres programmeurs. Je pense que les gens qui font les bibliothèques se doivent d'être plus riche dans les commentaires pour le potentiel du programmeur erreurs. Par exemple, l'Api Google besoin d'un côté manuel pour comprendre les messages d'erreur. C'est absurde, à besoin de la documentation externe pour les quelques petites erreurs qui n'ont pas besoin de vous pour aller à la recherche d'un manuel ou d'un cahier des charges. La bibliothèque doit être AUTO-DOCUMENTÉ. J'écris du code, même en prenant soin de les erreurs que je pourrais commettre encore six mois à partir de maintenant, et il essaie toujours d'être propre et sans code répétitif, déjà-écrit-pour-éviter-avenir-développeur-erreurs.
$
après que vous avez déjà utilisé le$
appeler$(document).ready(function() { } );
. Il est bon si vous vérifiez si jQuery est disponible, mais à ce stade, il est déjà trop tard.Vous pouvez utiliser $(window).resize() pour détecter si la fenêtre est redimensionnée.
jQuery n'a pas de fonction pour détecter de façon constante l'correctement la largeur et la hauteur de la fenêtre d'affichage[1] quand il y a une barre de défilement présente.
J'ai trouvé une solution qui utilise la Modernizr de la bibliothèque et plus précisément de la mq fonction qui ouvre des requêtes de média pour javascript.
Voici ma solution:
Ma réponse sera probablement pas aider le redimensionnement d'une iframe à 100% de la largeur de la fenêtre d'affichage, avec une marge de chaque côté, mais j'espère que ça va apporter quelque réconfort pour webdevelopers frustrés avec le navigateur de l'incohérence de javascript fenêtre d'affichage de la largeur et de la hauteur de calcul.
Cela pourrait peut-être aider en ce qui concerne l'iframe:
[1], Vous pouvez utiliser $(window).width() et $(window).hauteur() pour obtenir un nombre qui sera corriger dans certains navigateurs, mais incorrecte dans d'autres. Dans ces navigateurs, vous pouvez essayer d'utiliser la fenêtre.innerWidth et de la fenêtre.innerHeight pour obtenir la bonne largeur et la hauteur, mais je voudrais des conseils à l'encontre de cette méthode car elle reposerait sur l'agent utilisateur en reniflant.
Généralement les différents navigateurs sont contradictoires quant à savoir si ou non ils comprennent la barre de défilement dans le cadre de la fenêtre de largeur et de hauteur.
Remarque: les Deux $(window).width() et de la fenêtre.innerWidth varier entre les systèmes d'exploitation en utilisant le même navigateur.
Voir: https://github.com/eddiemachado/bones/issues/468#issuecomment-23626238
Veuillez noter que CSS3 fenêtre d'affichage unités (vh,vw) ne jouent pas bien sur iOS Lorsque vous faites défiler la page, la taille de la fenêtre est en quelque sorte recalculé et votre taille de l'élément qui utilise la fenêtre d'affichage des unités augmente également. Donc, en fait, certains javascript est requis.
Pour obtenir la taille de la fenêtre d'affichage sur charge et sur redimensionner (basé sur SimaWB réponse):