Sto usando window.devicePixelRatio che funziona su Andriod e Iphone ma non funziona su IE 10 Windows Mobile. qualche alternativa?window.devicePixelRatio non funziona in IE 10 Mobile?
risposta
window.devicePixelRatio = window.devicePixelRatio ||
Math.round(window.screen.availWidth/document.documentElement.clientWidth)
Per un ripiego IE, sia desktop e mobile, l'uso:
window.devicePixelRatio = window.devicePixelRatio ||
window.screen.deviceXDPI/window.screen.logicalXDPI;
ho scoperto che su un Nokia Lumia 1230 la proprietà window.devicePixelRatio restituisce 1 ancora se il valore è chiaramente errato. Test per window.screen.deviceXDPI/window.screen.logicalXDPI restituisce 1.52083333. Quindi usare window.devicePixelRatio non è una buona idea.
vorrei suggerire quanto segue:
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 ;
}
Per qualche motivo, utilizzando il modo migliore per verificare la presenza del deviceXDPI nell'oggetto schermo:
if(screen.hasOwnProperty('deviceXDPI')) {// IE mobile or IE
non funziona su questo Telefono.
In realtà nessuna delle risposte precedenti è corretta. Tutte le prove qui di seguito sono state effettuate su Lumia 520 telefoni con uno schermo LCD di 480 * 800:
WP8/IE Mobile 10:
- window.devicePixelRatio = undefined
- window.inner/outerWidth/Height = 320 * 485
- schermo. [invano] larghezza/altezza = 330 * 549
- document.body.clientWidth/Height = 320 * 486
- screen.device/logicalXDPI = 140/96 = 1,45,833 mila ..
previsto devicePixelRatio è 480/320 = 1,5 che può essere calcolato da:
Math.round(screen.availWidth * screen.deviceXDPI/screen.logicalXDPI/4) * 4/document.body.clientWidth
(è necessaria L'arrotondamento per ottenere una dimensione dello schermo LCD valido)
WP8.1/IE cellulare 11:
- window.devicePixelRatio = 1,42,177 mila ...
- window.outerWidth/Height = 338 * 512
- window.innerWidth/Height = 320 * 485
- schermo. [Invano] larghezza/altezza = 338 * 563
- document.body.clientWidth/Height = 320 * 486
- screen.device/logicalXDPI = 136/96 = 1,4166 ..
prevista devicePixelRatio è (ancora una volta) 480/320 = 1.5 che può essere calcolato da:
Math.round(screen.availWidth * window.devicePixelRatio/4) * 4/document.body.clientWidth
Quindi, anche se window.devicePixelRatio è presente, vi darà il rapporto tra DOM dimensioni dello schermo e le dimensioni dello schermo a cristalli liquidi, tuttavia, la dimensione dello schermo DOM è più grande della finestra disponibile dimensione. Se vuoi conoscere l'esatto rapporto tra pixel CSS e pixel del dispositivo, devi fare i calcoli qui sopra. Inoltre, questi calcoli sono validi in modalità verticale. In modalità orizzontale usa invece screen.availHeight (le dimensioni della schermata DOM non cambiano in base al cambio di orientamento su IE Mobile).
- 1. contenteditable non funziona in IE 10
- 2. Primefaces p: fileUpload non funziona in IE 10
- 3. event.preventDefault in IE 10
- 4. Pulsante di collegamento che non funziona con IE 10
- 5. non funziona in IE
- 6. . Non funziona in IE
- 7. non funziona in IE
- 8. : nessuno non funziona in IE
- 9. indicatore svg non funziona in IE9-10
- 10. window.print non funziona in IE
- 11. $ .getJson non funziona in IE
- 12. ScrollTop non funziona in IE
- 13. outerHTML non funziona in IE
- 14. $ .getJSON non funziona in IE
- 15. & bullet; non funziona in IE?
- 16. IE e.target.id non funziona
- 17. IE 10 + KnockoutJS = HierarchyRequestError?
- 18. Controllo per IE 10
- 19. tag wbr non funziona in IE
- 20. JavaScript semplice non funziona in qualsiasi IE?
- 21. cliccabile etichetta non funziona in IE 8
- 22. jQuery in iframe non funziona in IE
- 23. Download risposta Json in IE (7 ~ 10)
- 24. window.devicePixelRatio supporto del browser
- 25. iOS 10, NSUserDefaults non funziona
- 26. JavaScript non funziona su Internet Explorer 10
- 27. VBA - IE GetElementByID non funziona
- 28. IE 11 + SignalR non funziona
- 29. ExtJS: autoLoad non funziona in IE
- 30. appendChild non funziona con window.open in IE
Questo fallback sembra ** errato ** perché 'availWith' e' clientWidth' sono entrambi in [dip] (http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html) e perché 'clientWidth' è un valore dinamico. L'unità CSS per 'dispositivoPixelRatio' è [dppx] (http://www.w3.org/TR/css3-values/#dppx). – ryanve
'devicePixelRatio' potrebbe essere un valore frazionario, quindi' Math.round' è fuori luogo, ma qualunque sia. Basta non usare il fallback se non sei sicuro che la finestra sia ingrandita (il che significa su tutti i client desktop). Inoltre, 'document.documentElement.clientWidth' non include la larghezza della barra di scorrimento sui browser desktop. – MaxArt
@MaxArt, modifica la mia risposta se sei sicuro. – user960567