J'essaie de détecter la taille actuelle du navigateur (largeur et hauteur). Je sais que c'est super facile dans jQuery avec $(document).width and $(document).height
, mais je ne veux pas ajouter la taille de la librairie jQuery au projet, donc je préfère utiliser JavaScript. Quelle serait la manière courte et efficace de faire la même chose avec JavaScript?Taille du navigateur (largeur et hauteur)
Répondre
// first get the size from the window
// if that didn't work, get it from the body
var size = {
width: window.innerWidth || document.body.clientWidth,
height: window.innerHeight || document.body.clientHeight
}
la taille du corps n'est pas la même que la taille de la fenêtre, ce qui en fait le souhaité. – vsync
Ceci peut être optimisé en utilisant des opérateurs de court-circuit. ex: 'largeur: fenêtre.innerWidth || document.body.clientWidth' –
@vsync, c'est vrai, mais la taille de la fenêtre n'est pas définie par tous les navigateurs. @Peter, bon point. Je vais mettre à jour ça. – Joel
Essayez ceci;
<script type="text/javascript">
winwidth=document.all?document.body.clientWidth:window.innerWidth;
winHeight=document.all?document.body.clientHeight:window.innerHeight;
alert(winwidth+","+winHeight);
</script>
Vous ne devriez pas utiliser une vérification de navigateur comme 'document.all' à la place vérifiez que clientWidth n'est pas indéfini. – Joel
@Joel, Pourquoi pas, pouvez-vous s'il vous plaît contribuer votre réponse. Merci – dono
Le fait qu'un navigateur implémente ou non 'document.all' ne signifie pas qu'il utilise ou non' document.body.clientHeight'. Vous devriez vérifier la propriété que vous voulez, pas une propriété sans rapport. – Joel
function getWindowSize(){
var d= document, root= d.documentElement, body= d.body;
var wid= window.innerWidth || root.clientWidth || body.clientWidth,
hi= window.innerHeight || root.clientHeight || body.clientHeight ;
return [wid,hi]
}
navigateurs IE sont les seuls qui n'utilisent pas innerHeight et la largeur.
Mais il n'y a pas de 'standard' - juste des implémentations de navigateur.
Testez le html (document.documentElement) clientHeight avant de vérifier le corps si ce n'est pas 0, c'est la hauteur de la 'viewport' et le body.clientHeight est la hauteur du corps qui peut être plus grande ou plus petit que la fenêtre.
Le mode arrière renvoie 0 pour l'élément racine et la hauteur de la fenêtre (fenêtre) à partir du corps.
Identique à la largeur.
Mon utilisation de cas pour window.innerWidth
impliquait la construction d'une fenêtre contextuelle modale personnalisée. Autrement dit, l'utilisateur clique sur le bouton, la fenêtre s'ouvre centrée dans le navigateur et il y a un bkgd noir transparent derrière la fenêtre contextuelle. Mon problème était de trouver la largeur et la hauteur du navigateur pour créer le bkgd transparent.
Le window.innerWidth
fonctionne très bien pour trouver la largeur mais rappelez-vous window.innerWidth and window.innerHeight
ne compensent pas les barres de défilement, donc si votre contenu va au-delà de la zone de contenu visible. Je devais soustraire 17px de la valeur.
transBkgd.style.width = (window.innerWidth - 17) + "px";
Depuis le contenu du site toujours allé au-delà de la hauteur visible, je ne pouvais pas utiliser window.innerHeight
. Si l'utilisateur faisait défiler vers le bas, le bkgd transparent se terminerait à ce moment là et cela aurait juste l'air méchant. Afin de maintenir le bkgd transparent tout le chemin vers le bas du contenu que j'ai utilisé document.body.clientHeight
.
transBkgd.style.height = document.body.clientHeight + "px";
J'ai testé la pop dans IE, FF, Chrome, et il semble bon dans tous les domaines. Je sais que cela ne suit pas trop la question originale mais je pense que cela pourrait aider si quelqu'un d'autre rencontre le même problème lors de la création d'une pop-up modale personnalisée.
Voici un exemple de code
function getSize(){
var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h=window.innerHeight || document.documentElement.clientHeight ||document.body.clientHeight;
}
- 1. Taille de l'iframe du navigateur
- 2. trouver Hauteur et largeur
- 3. Spécifier la largeur et la hauteur du tracé
- 4. hauteur css et problème largeur
- 5. Modal Popup Extender hauteur du panneau largeur
- 6. obtenir gtkimage largeur et hauteur
- 7. jQuery obtenir hauteur et largeur
- 8. Obtenir l'image Hauteur et largeur
- 9. contrôle littéral hauteur et largeur?
- 10. ASP.NET: Valider la taille du fichier (largeur et hauteur) avant le téléchargement
- 11. Écoutez la largeur navigateur/hauteur change avec jQuery
- 12. XNA Largeur et Hauteur à Vector2
- 13. Comment régler la taille (largeur, hauteur) de swf externe chargé
- 14. Obtenir la largeur du navigateur et cacher l'élément en fonction de la taille?
- 15. WPF Style Setter * Hauteur et largeur
- 16. Grille Silverlight avec largeur et hauteur automatiques
- 17. Largeur et hauteur du champ de saisie: comment les changer
- 18. largeur du cadre iPad et mixup hauteur dans le paysage
- 19. Obtenir la position, la largeur et la hauteur du graphique
- 20. Taille et largeur CSS dynamiques
- 21. Comment faire pour que Largeur et Hauteur reflètent ScaleTransform et comment ScaleTransform en définissant Hauteur et Largeur?
- 22. Taille et largeur max avec jquery redimensionner
- 23. Conversion de largeur/hauteur WPF en VB 6 largeur/hauteur
- 24. redimensionner la largeur de jqgrid lors du redimensionnement du navigateur
- 25. Image Hauteur Largeur Problème
- 26. Modification de la largeur et de la hauteur de l'image
- 27. HTML: comment définir enfants largeur de l'élément = largeur de la fenêtre du navigateur?
- 28. Largeur et hauteur maximales dans Silverlight
- 29. JavaScript: Comment trouver la largeur et la hauteur du point de vue dans la fenêtre du navigateur?
- 30. Cross largeur du champ d'entrée du navigateur stylisation
Cela a été très bien répondu dans: http://stackoverflow.com/questions/1766861/find-the-exact-height-and-width-of-the -viewport-in-a-cross-browser-way-no-protot – vsync