Estoy tratando de detectar el tamaño actual del navegador (ancho y alto). Sé que es muy fácil en jQuery con $(document).width and $(document).height
, pero no quiero agregar el tamaño de jQuery lib al proyecto, así que prefiero usar JavaScript incorporado. ¿Cuál sería la forma corta y eficiente de hacer lo mismo con JavaScript?Tamaño del navegador (ancho y alto)
Respuesta
// 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
}
el tamaño del cuerpo no es lo mismo que el tamaño de la ventana, que es el deseado en realidad. – vsync
Esto se puede optimizar utilizando operadores de cortocircuito. ex: 'ancho: ventana.innerWidth || document.body.clientWidth' –
@vsync, eso es cierto, pero el tamaño de la ventana no está definido por todos los navegadores. @ Peter, buen punto. Voy a actualizar eso. – Joel
Pruebe esto;
<script type="text/javascript">
winwidth=document.all?document.body.clientWidth:window.innerWidth;
winHeight=document.all?document.body.clientHeight:window.innerHeight;
alert(winwidth+","+winHeight);
</script>
No debe usar una comprobación del navegador como 'document.all' en su lugar, compruebe que clientWidth no está indefinido. – Joel
@Joel, ¿por qué no? Puede contribuir con su respuesta. Gracias – dono
El hecho de que un navegador implemente o no 'document.all' no significa que implemente o no' document.body.clientHeight'. Debe verificar la propiedad que desea, no una propiedad no relacionada. – 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]
}
navegadores IE son los únicos que no utilizan innerHeight y anchura.
Pero no hay implementaciones de navegador 'estándar'.
Pruebe el html (document.documentElement) clientAltura antes de comprobar el cuerpo: si no es 0, es la altura de la "ventana gráfica" y body.clientHeight es la altura del cuerpo, que puede ser mayor o más pequeño que la ventana.
El modo hacia atrás devuelve 0 para el elemento raíz y la altura de la ventana (ventana gráfica) del cuerpo.
Lo mismo con el ancho.
El uso de mi caso para window.innerWidth
involucró la construcción de una ventana emergente modal personalizada. En pocas palabras, el usuario hace clic en el botón, la ventana emergente se abre centrada en el navegador y hay un bkgd negro transparente detrás de la ventana emergente. Mi problema era encontrar el ancho y alto del navegador para crear el bkgd transparente.
El window.innerWidth
funciona muy bien para encontrar el ancho, pero recuerda window.innerWidth and window.innerHeight
no compensa las barras de desplazamiento, por lo que si su contenido va más allá del área de contenido visible. Tuve que restar 17px del valor.
transBkgd.style.width = (window.innerWidth - 17) + "px";
Dado que el contenido del sitio siempre fueron más allá de la altura visible no pude usar window.innerHeight
. Si el usuario se desplaza hacia abajo, el bkgd transparente terminaría en ese punto y eso se vería desagradable. Para mantener el bkgd transparente hasta el final del contenido, utilicé document.body.clientHeight
.
transBkgd.style.height = document.body.clientHeight + "px";
Probé la ventana emergente en IE, FF, Chrome, y se ve bien en todos los ámbitos. Sé que esto no sigue demasiado la pregunta original, pero creo que podría ayudar si alguien más se encuentra con el mismo problema al crear una ventana emergente modal personalizada.
Aquí es un ejemplo de código
function getSize(){
var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h=window.innerHeight || document.documentElement.clientHeight ||document.body.clientHeight;
}
- 1. jQuery UI ancho y alto del diálogo en función del ancho y alto de la pantalla
- 2. Escuche los cambios de ancho/alto del navegador con jQuery
- 3. Raphael.js - imagen con su tamaño original de ancho y alto?
- 4. JavaScript: ¿Cómo averiguar el ancho y alto del punto de vista en la ventana del navegador?
- 5. Ancho y alto personalizados en DOMPDF
- 6. Cambiar ios Tamaño del cuadro (ancho y alto) mantener la posición (x, y)
- 7. Ancho y alto completos SVG
- 8. CSS 100% de ancho en el tamaño del navegador
- 9. Gmaps4rails: configuración del ancho y alto del mapa
- 10. Google Map .InfoWindow Establecer alto y ancho
- 11. ancho/alto de CSS pixel y porcentaje de cálculo combintaion?
- 12. Cómo obtener el ancho/alto del texto
- 13. Establecer ancho y alto de escena
- 14. Resolución del dispositivo móvil (ancho, alto) encabezado de tamaño de pantalla
- 15. Tamaño del elemento de configuración del navegador Android demasiado pequeño
- 16. Configuración de ancho y alto UIWebView
- 17. Establecer ancho o alto del elemento en el modo Estándares
- 18. jQuery cambiar el tamaño y posicionar la ventana del navegador actual
- 19. ¿Puedo cambiar el tamaño de la ventana del navegador?
- 20. android cómo cambiar <item> ancho y alto
- 21. jQuery ~ Cómo animar el ancho y alto de la caja desde el centro del centro
- 22. ¿Cómo saber el tamaño original (ancho y alto) de un archivo swf con java?
- 23. jQuery: Animar ancho/alto, pero permanecer centrado
- 24. Calcular ancho y alto de Flv y Swf usando C#
- 25. Animar un ancho y alto de ventana WPF
- 26. ¿Cómo obtengo el ancho y alto de un lienzo HTML5?
- 27. Cómo establecer un: alto/ancho del enlace con css?
- 28. Android: Configuración del alto del botón en XML en función de su ancho
- 29. Ancho y alto de la parte web de SharePoint dinámico
- 30. cómo obtener ancho y alto de ventana con YUI?
Esto ha sido respondida bastante bien en: http://stackoverflow.com/questions/1766861/find-the-exact-height-and-width-of-the -viewport-in-a-cross-browser-way-no-protot – vsync