alex mueca
Estoy tratando de encontrar la altura y el ancho exactos de la ventana gráfica de un navegador, pero sospecho que Mozilla o IE me están dando el número incorrecto. Aquí está mi método para la altura:
var viewportHeight = window.innerHeight ||
document.documentElement.clientHeight ||
document.body.clientHeight;
Todavía no he comenzado con el ancho, pero supongo que será algo similar.
¿Hay una forma más correcta de obtener esta información? Idealmente, me gustaría que la solución también funcione con Safari/Chrome/otros navegadores.
León
Puedes intentar esto:
function getViewport() {
var viewPortWidth;
var viewPortHeight;
// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
if (typeof window.innerWidth != 'undefined') {
viewPortWidth = window.innerWidth,
viewPortHeight = window.innerHeight
}
// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
else if (typeof document.documentElement != 'undefined'
&& typeof document.documentElement.clientWidth !=
'undefined' && document.documentElement.clientWidth != 0) {
viewPortWidth = document.documentElement.clientWidth,
viewPortHeight = document.documentElement.clientHeight
}
// older versions of IE
else {
viewPortWidth = document.getElementsByTagName('body')[0].clientWidth,
viewPortHeight = document.getElementsByTagName('body')[0].clientHeight
}
return [viewPortWidth, viewPortHeight];
}
( http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/ )
Sin embargo, ni siquiera es posible obtener la información de la ventana gráfica en todos los navegadores (por ejemplo, IE6 en modo peculiar). Pero el script anterior debería hacer un buen trabajo 🙂
-
Estuve atascado con un error durante 5 horas, resulta que jquery no devuelve el mismo valor en FF/Chrome al hacer
$(document).width()
o$(window).width()
.window.innerWidth
Funciona genial.– qwerty
11 de diciembre de 2012 a las 12:59
-
Esto no parece funcionar dentro de iframes, sino que devuelve el tamaño de iframe. ¿Alguna pista sobre eso?
–Alejandro García Iglesias
09/08/2013 a las 19:42
-
@GarciaWebDev Entonces lo que estás diciendo es que funciona correctamente 😉
– Dee2000
30/10/2013 a las 16:52
-
@ Dee2000 lo que estoy diciendo o más bien lo que quiero decir es que cuando mides en una página normal, obtienes el tamaño de la ventana gráfica del navegador, pero cuando mides desde el interior de un iframe, obtienes el tamaño del documento de ese iframe, no el ventana del navegador. No estoy seguro si me estoy explicando bien, avíseme si debo reformular.
–Alejandro García Iglesias
31 de octubre de 2013 a las 5:22
-
@GarciaWebDev En una página simple, ‘piensas’ que estás obteniendo el tamaño de la ventana gráfica del ‘navegador’, pero no es así. Obtiene el tamaño de la ventana gráfica de la página HTML en la que se encuentra. Ya sea que esa página sea ‘superior’ o en un iframe o un iframe anidado-anidado-anidado, siempre es el tamaño de la ventana gráfica de la página HTML en la que se encuentra. Si desea conocer el tamaño de la ventana gráfica de la página superior (o principal), siempre que su iframe sea ‘amigable’ (no entre dominios), simplemente puede reemplazar “ventana”. con los padres.” o “superior”. a cada valor que pruebe (por ejemplo, parent.innerWidth).
– Dee2000
31/10/2013 a las 13:33
dzona
Puede usar una versión más corta:
<script type="text/javascript">
<!--
function getViewportSize(){
var e = window;
var a="inner";
if (!('innerWidth' in window)){
a="client";
e = document.documentElement || document.body;
}
return { width : e[ a+'Width' ] , height : e[ a+'Height' ] }
}
//-->
</script>
ben
Siempre he usado document.documentElement.clientHeight
/clientWidth
. No creo que necesites las condiciones OR en este caso.
-
No podría doler. El resto no se evaluará una vez que se encuentre un valor válido
–Justin Johnson
19 de noviembre de 2009 a las 22:53
-
tiene un error tipográfico allí, debería ser: ‘document.documentElement’. esto no funciona en modo quircks… en FF da la altura del documento completo, en lugar de solo ‘clientHeight’, y en IE da ‘0’.
– vsync
23 de marzo de 2010 a las 14:40
-
Acordado
document.documentElement.clientWidth
es el camino a seguir en JS puro. responsejs.com/labs/dimensiones– ryanve
16 de enero de 2012 a las 5:58
-
Acordado. De: quirksmode.org/mobile/viewports.html – “
document.documentElement
es de hecho el<html>
elemento”. “document.documentElement.clientWidth
yclientHeight
todavía da las dimensiones de la ventana gráfica, y no de la<html>
elemento. (Esto es una regla especial Eso va solo para este elemento solo para este par de propiedades. En todos los demás casos, se usa el ancho real del elemento). Por lo tanto, debería funcionar “en todos los casos” desde el modo estándar IE6 y hacia arriba. Estos valores son Excluyendo barras de desplazamiento (a diferencia dewindow.innerWidth
yinnerHeight
).– GitaarLAB
14/08/2015 a las 22:39
Mathi
Prueba esto..
<script type="text/javascript">
function ViewPort()
{
var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)
var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
var viewsize = w + "," + h;
alert("Your View Port Size is:" + viewsize);
}
</script>
Usa este consejo: http://www.appelsiini.net/projects/viewport o ese código: http://updatepanel.wordpress.com/2009/02/20/getting-the-page-and-viewport-dimensions-using-jquery/
-
Estoy tratando de hacer esto sin usar jQuery. Supongo que debería haber sido más claro en eso.
– Alex Sonrisa
24 de noviembre de 2009 a las 15:39
-
Estoy tratando de hacer esto sin usar jQuery. Supongo que debería haber sido más claro en eso.
– Alex Sonrisa
24 de noviembre de 2009 a las 15:39
posible duplicado de Obtener las dimensiones de la ventana gráfica del navegador con JavaScript
– Stephan
24 de noviembre de 2014 a las 13:28
Además, puede utilizar el W biblioteca, que maneja la detección de ventana gráfica entre navegadores;)
– pirsmk
29 de abril de 2016 a las 13:51