Tôi đang sử dụng window.devicePixelRatio hoạt động trên Andriod và Iphone nhưng không hoạt động trong IE 10 Windows mobile. thay thế nào?window.devicePixelRatio không hoạt động trong IE 10 Mobile?
Trả lời
window.devicePixelRatio = window.devicePixelRatio ||
Math.round(window.screen.availWidth/document.documentElement.clientWidth)
Đối với một fallback IE, cả hai máy tính để bàn và điện thoại di động, sử dụng:
window.devicePixelRatio = window.devicePixelRatio ||
window.screen.deviceXDPI/window.screen.logicalXDPI;
tôi thấy rằng trên Nokia Lumia 1230 tài sản window.devicePixelRatio trả 1 thậm chí nếu giá trị rõ ràng là không chính xác. Thử nghiệm cho window.screen.deviceXDPI/window.screen.logicalXDPI trả về 1.52083333. Vì vậy, bằng cách sử dụng window.devicePixelRatio đầu tiên không phải là một ý tưởng tốt.
tôi xin đề nghị như sau:
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 ;
}
Đối với một số lý do, bằng cách sử dụng cách tốt nhất để kiểm tra sự hiện diện của deviceXDPI trong đối tượng màn hình:
if(screen.hasOwnProperty('deviceXDPI')) {// IE mobile or IE
không làm việc về vấn đề này điện thoại.
Thực ra, không có câu trả lời nào trước đây là chính xác. Tất cả các bài kiểm tra dưới đây được thực hiện trên Lumia 520 điện thoại có một màn hình LCD 480 * 800:
WP8/IE Mobile 10:
- window.devicePixelRatio = không xác định
- window.inner/outerWidth/Chiều cao = 320 * 485
- màn hình. [avail] Width/Height = 330 * 549
- document.body.clientWidth/Chiều cao = 320 * 486
- screen.device/logicalXDPI = 140/96 = 1,45833 ..
Dự kiến devicePixelRatio là 480/320 = 1,5 có thể được tính bằng cách:
Math.round(screen.availWidth * screen.deviceXDPI/screen.logicalXDPI/4) * 4/document.body.clientWidth
(Các làm tròn là cần thiết để có được một kích thước màn hình LCD có hiệu lực)
WP8.1/IE Điện thoại di động 11:
- window.devicePixelRatio = 1,42177 ...
- window.outerWidth/Chiều cao = 338 * 512
- window.innerWidth/Chiều cao = 320 * 485
- màn hình. [Avail] Width/Height = 338 * 563
- document.body.clientWidth/Chiều cao = 320 * 486
- screen.device/logicalXDPI = 136/96 = 1.4166 ..
Thiết bị dự kiếnPixelRatio là (một lần nữa) 480/320 = 1.5 có thể được tính bằng cách:
Math.round(screen.availWidth * window.devicePixelRatio/4) * 4/document.body.clientWidth
Vì vậy, ngay cả khi window.devicePixelRatio được hiển thị sẽ cung cấp cho bạn tỷ lệ giữa kích thước màn hình DOM và kích thước màn hình LCD, tuy nhiên, kích thước màn hình DOM là lớn hơn so với khung nhìn có sẵn kích thước. Nếu bạn muốn biết tỷ lệ chính xác giữa pixel CSS và pixel của thiết bị thì bạn phải thực hiện các phép tính ở trên. Ngoài ra, các tính toán này là hợp lệ trong chế độ dọc. Ở chế độ ngang, hãy sử dụng screen.availHeight thay vào đó (kích thước màn hình DOM không thay đổi về thay đổi hướng trên IE Mobile).
- 1. event.preventDefault trong IE 10
- 2. . Không hoạt động trong IE
- 3. có thể chỉnh sửa nội dung không hoạt động trong IE 10
- 4. svg marker không hoạt động trong IE9-10
- 5. @ font-face không hoạt động trong internet explorer mobile
- 6. IE e.target.id không hoạt động
- 7. Onclick chọn không hoạt động trong IE
- 8. $ .getJson không hoạt động trong IE
- 9. Kenburner Slider không hoạt động trong IE
- 10. $ .getJSON không hoạt động trong IE
- 11. javascript: xml thành chuỗi trong IE 10
- 12. IE 10 + KnockoutJS = HierarchyRequestError?
- 13. SWFUpload hoạt động trong IE, nhưng không phải trong Firefox
- 14. MyEclipse 10 autocomplete không hoạt động
- 15. Kiểm tra IE 10
- 16. jQuery Mobile không hoạt động trong PhoneGap Windows Phone 8
- 17. jQuery Mobile .listview ('refresh') không hoạt động
- 18. jQuery Mobile ajaxEnabled không hoạt động?
- 19. Lề: Tự động không hoạt động trong IE
- 20. lưu trữ phiên không hoạt động trong IE
- 21. Phiên PHP không hoạt động với IE
- 22. Tự động tải jQuery mobile khiến IE giảm thiểu
- 23. FB.login(): Trình duyệt không được hỗ trợ IE Mobile
- 24. jQuery Mobile changePage() không hoạt động trong Windows Phone
- 25. JQuery Mobile không hoạt động bên trong UIWebView
- 26. VBA - IE GetElementByID không hoạt động
- 27. Kích thước nền IE không hoạt động
- 28. jQuery trong iframe không hoạt động trong IE
- 29. Chức năng tách JavaScript không hoạt động trong IE
- 30. selectedOptions [0] .textContent; không hoạt động trong IE hoặc Firefox
Dự phòng đó có vẻ ** không chính xác ** vì 'availWith' và' clientWidth' đều nằm trong [dips] (http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html) và bởi vì 'clientWidth' là một giá trị động. Đơn vị CSS cho 'devicePixelRatio' là [dppx] (http://www.w3.org/TR/css3-values/#dppx). – ryanve
'devicePixelRatio' có thể là một giá trị phân số, vì vậy' Math.round' không đúng chỗ, nhưng bất cứ điều gì. Chỉ cần không sử dụng dự phòng nếu bạn không chắc chắn cửa sổ được tối đa hóa (có nghĩa là trên tất cả các máy tính để bàn). Hơn nữa, 'document.documentElement.clientWidth' không bao gồm chiều rộng thanh cuộn trên các trình duyệt máy tính để bàn. – MaxArt
@MaxArt, chỉ cần chỉnh sửa câu trả lời của tôi nếu bạn chắc chắn. – user960567