javascript - internet - window.devicePixelRatio no funciona en IE 10 Mobile?
habilitar javascript en internet explorer 10 (4)
window.devicePixelRatio = window.devicePixelRatio ||
Math.round(window.screen.availWidth / document.documentElement.clientWidth)
Estoy usando window.devicePixelRatio que funciona en Andriod y Iphone, pero no funciona en IE 10 Windows Mobile. alguna alternativa?
Para una alternativa de IE, tanto de escritorio como móvil, use:
window.devicePixelRatio = window.devicePixelRatio ||
window.screen.deviceXDPI / window.screen.logicalXDPI;
Encontré que en un Nokia Lumia 1230 la propiedad window.devicePixelRatio devuelve 1 incluso si el valor es claramente incorrecto. La prueba de window.screen.deviceXDPI / window.screen.logicalXDPI devuelve 1.52083333. Entonces, usar window.devicePixelRatio primero no es una buena idea.
Sugeriría lo siguiente:
function getDevicePixelRatio (){
var pixelRatio = 1; // just for safety
if(''deviceXDPI'' in screen){ // IE mobile or IE
pixelRatio = screen.deviceXDPI / screen.logicalXDPI;
} else if (window.hasOwnProperty(''devicePixelRatio'')){ // other devices
pixelRatio = window.devicePixelRatio;
}
return pixelRatio ;
}
Por alguna razón, usando la mejor manera de probar la presencia del dispositivo XDPI en el objeto de pantalla:
if(screen.hasOwnProperty(''deviceXDPI'')) {// IE mobile or IE
no funciona en este teléfono
En realidad, ninguna de las respuestas anteriores es correcta. Todas las pruebas siguientes se realizaron en teléfonos Lumia 520 con una pantalla LCD de 480 * 800:
WP8 / IE Mobile 10:
- window.devicePixelRatio = undefined
- window.inner / outerWidth / Height = 320 * 485
- pantalla. [disponibilidad] Ancho / Altura = 330 * 549
- document.body.clientWidth / Height = 320 * 486
- screen.device / logicalXDPI = 140/96 = 1.45833 ..
El dispositivo esperadoPixelRatio es 480/320 = 1.5, que se puede calcular de la siguiente manera:
Math.round(screen.availWidth * screen.deviceXDPI / screen.logicalXDPI / 4) * 4 / document.body.clientWidth
(El redondeo es necesario para obtener un tamaño de pantalla LCD válido)
WP8.1 / IE Mobile 11:
- window.devicePixelRatio = 1.42177 ...
- window.outerWidth / Height = 338 * 512
- window.innerWidth / Height = 320 * 485
- pantalla. [disponibilidad] Ancho / Altura = 338 * 563
- document.body.clientWidth / Height = 320 * 486
- screen.device / logicalXDPI = 136/96 = 1.4166 ..
Dispositivo esperadoPixelRatio es (una vez más) 480/320 = 1.5 que se puede calcular por:
Math.round(screen.availWidth * window.devicePixelRatio / 4) * 4 / document.body.clientWidth
Entonces, incluso si window.devicePixelRatio está presente, le dará la proporción entre el tamaño de la pantalla DOM y el tamaño de la pantalla LCD, sin embargo, el tamaño de la pantalla DOM es mayor que el tamaño de la ventana gráfica disponible. Si desea conocer la relación exacta entre los píxeles CSS y los píxeles del dispositivo, debe realizar los cálculos anteriores. Además, estos cálculos son válidos en modo vertical. En modo apaisado use screen.availHeight en su lugar (las dimensiones de la pantalla DOM no cambian en el cambio de orientación en IE Mobile).