2012-06-29 8 views
14

Estoy tratando de averiguar cómo obtener las dimensiones físicas de la pantalla de un dispositivo a través de Javascript. Hasta el momento, mi conclusión es que actualmente es imposible, pero espero que alguien pueda probar que estoy equivocado :).¿Cómo obtener el tamaño físico de la pantalla (es decir, en pulgadas)?

Hasta ahora he intentado obtener esta información encontrando el DPI del dispositivo, pero parece que no hay forma de obtener el valor correcto aquí, como todos los dispositivos que he probado (algunos HDPI & XHDPI dispositivos Android, un iPhone4S, un iPad 2 y un iPad 3) reportan 96DPI.

El primer método para obtener el DPI Probé es uno puede encontrar por todas partes en el Internet: crear un div con un ancho de CSS 1in, obtiene su clientWidth o offsetWidth y ahí está tu DPI. No funciona, todos los dispositivos informan 96.

El segundo método se utiliza el resolution media query, algo a lo largo de las líneas de:

for (var i=90; i < 400; i++) { 
    if (matchMedia('(resolution: ' + i + 'dpi)').matches) { 
     return i; 
    } 
} 

pensé que era una solución inteligente, pero por desgracia que devuelve 96, así .

¿Hay algo más que pueda probar?

+2

Sugiero revisar [este hilo] (http://stackoverflow.com/questions/6831115/is-it-possible-to-get-a-users-physical-screen-size-without-the-use-of -a-physical), si aún no lo has hecho.) No creo que sea posible, al menos, más-o-menos precisamente. – raina77ow

+0

No tengo mejor idea que preguntarle al usuario. –

Respuesta

9

96 "PPP" es un estándar web que tiene poco que ver con la realidad. Las pulgadas que mide se consideran mejor como pulgadas "lógicas", que corresponden a medidas de fuente y medidas de CSS (que pueden incluir puntos y pulgadas). Un "punto" en la tipografía se define como 1/72 de pulgada, pero las pantallas han dejado de ser de hace 72 DPI hace siglos. Por lo tanto, todo un punto CSS realmente significa ahora que una fuente de 96 puntos tiene 72 píxeles de alto. (Y eso son píxeles lógicos, ya que el problema ahora se combina aún más con las pantallas de alta resolución).

De todos modos, la mayoría de los sistemas operativos nativos no saben nada sobre su verdadero tamaño de pantalla física, por lo que ni siquiera tienen información sobre tales que podrían exponer a aplicaciones web a través de un navegador. Lo que estás preguntando no es posible.

+0

Me pregunto, si la mayoría de los sistemas operativos no conocen el tamaño de la pantalla física, ¿cómo es que una aplicación como MS Word puede mostrar con precisión el tamaño de la página cuando se amplía al 100%? También otras aplicaciones como Photoshop casi seguramente deberían conocer la pantalla DPI. – Carvellis

+1

Por supuesto, todos los sistemas operativos modernos son conscientes del tamaño físico del dispositivo de salida. Incluso el Windows-3.1 viejo y espolvoreado al menos proporcionó los campos necesarios en sus estructuras de datos para representarlo (y, por supuesto, se puede usar con, por ejemplo, impresoras). Y desde la introducción de DDC en las conexiones de pantalla, las pantallas de la computadora informan su tamaño de pantalla física, que junto con la densidad de píxeles se traduce en una resolución física. Por supuesto, si el software realmente usa esa información es una historia diferente. Sin embargo, la información ha estado disponible en todos los sistemas operativos principales durante mucho tiempo. – datenwolf

+1

Quizás esa información haya estado disponible * a * para sistemas operativos de algún hardware. Pero pocos sistemas operativos, si es que hay alguno, lo ponen a disposición de las aplicaciones, y cada vez menos aplicaciones fijas lo usan.(Y ningún navegador web expone esta información a JavaScript.) – rickster

0

Eche un vistazo a this post. Está hecho con:

<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi"> 
+1

Creo que está configurando el DPI, no recuperándolo. –

+1

Esperaba que, con esta etiqueta agregada, el dispositivo informara el DPI correcto usando uno de los métodos descritos en mi pregunta. Desafortunadamente, eso no sucede, pero gracias por la sugerencia. – Felix

Cuestiones relacionadas