2012-06-29 51 views
14

Tôi đang cố gắng tìm ra cách để có được kích thước vật lý của màn hình thiết bị thông qua Javascript. Cho đến nay, kết luận của tôi là nó hiện không thể, nhưng tôi hy vọng ai đó có thể chứng minh tôi sai :).Cách nhận kích thước vật lý của màn hình (ví dụ: tính bằng inch)?

Cho đến nay tôi đã cố gắng lấy thông tin này bằng cách tìm DPI của thiết bị, nhưng dường như không có cách nào để có được giá trị chính xác ở đây, như tất cả các thiết bị tôi đã thử nghiệm (một số thiết bị Android HDSI & XHDPI, iPhone4S, iPad 2 và iPad 3) báo cáo 96DPI.

Phương pháp đầu tiên của việc thu thập các Sở KH & ĐT tôi đã cố gắng là một trong những bạn có thể tìm thấy ở khắp mọi nơi trên internet: tạo ra một div có chiều rộng CSS của 1in, có clientWidth hoặc offsetWidth và có DPI của bạn của nó. Không hoạt động, tất cả các thiết bị báo cáo 96.

Phương pháp thứ hai được sử dụng resolution media query, một cái gì đó dọc theo dòng:

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

Tôi nghĩ đó là một giải pháp thông minh, nhưng tiếc rằng trả 96 cũng .

Còn gì để tôi có thể thử không?

+2

Tôi khuyên bạn nên kiểm tra [chủ đề này] (http://stackoverflow.com/questions/6831115/is-it-possible-to-get-a-users-physical-screen-size-without-the-use-of -a-vật lý), nếu bạn chưa làm điều này. Tôi không nghĩ rằng nó có thể - ít nhất, chính xác hơn. – raina77ow

+0

Tôi không có ý tưởng nào tốt hơn là hỏi người dùng. –

Trả lời

9

96 "DPI" là một tiêu chuẩn web mà có ít để làm với thực tế. Các inch nó đo được coi là tốt nhất "hợp lý" inch, tương ứng với số liệu phông chữ và các phép đo CSS (có thể bao gồm các điểm và inch). Một "điểm" trong kiểu chữ được xác định là 1/72 inch, nhưng màn hình đã dừng được liên tục 72 DPI trước đây. Vì vậy, tất cả các điểm CSS thực sự có nghĩa là bây giờ là một phông chữ 96 điểm cao 72 pixel. (Và đó là các điểm ảnh hợp lý, vì vấn đề hiện đang bị các màn hình hi-DPI làm xáo trộn thêm.)

Nhưng dù sao, hầu hết các hệ điều hành gốc không biết gì về kích thước màn hình thực của chúng, vì vậy chúng thậm chí không có thông tin về việc họ có thể tiếp xúc với ứng dụng web thông qua trình duyệt. Những gì bạn đang yêu cầu là không thể.

+0

Tôi tự hỏi, nếu hầu hết các hệ điều hành không biết về kích thước màn hình vật lý, làm thế nào mà một ứng dụng như MS Word có thể hiển thị chính xác kích thước trang khi phóng to 100%? Ngoài ra các ứng dụng khác như Photoshop hầu như chắc chắn sẽ phải biết màn hình DPI. – Carvellis

+1

Tất nhiên tất cả các hệ điều hành hiện đại đều nhận thức rõ về kích thước vật lý của thiết bị đầu ra. Ngay cả Windows-3.1 cũ và dusted ít nhất cũng cung cấp các trường cần thiết trong cấu trúc dữ liệu của nó để đại diện cho nó (và dĩ nhiên nó được sử dụng với ví dụ: máy in). Và kể từ khi giới thiệu DDC trong kết nối hiển thị, màn hình máy tính báo cáo kích thước màn hình vật lý của chúng, cùng với mật độ điểm ảnh được dịch thành độ phân giải vật lý. Tất nhiên nếu phần mềm thực sự sử dụng thông tin đó là một câu chuyện khác. Tuy nhiên, thông tin đã có sẵn trong tất cả các hệ điều hành lớn trong một thời gian dài. – datenwolf

+1

Có lẽ thông tin đó đã có sẵn cho * hệ điều hành đối với một số phần cứng. Nhưng rất ít, nếu có, hệ điều hành làm cho nó có sẵn cho các ứng dụng và ít ứng dụng hơn nữa đã từng sử dụng nó.(Và không có trình duyệt web nào hiển thị thông tin này cho JavaScript.) – rickster

0

Hãy xem this post. Nó thực hiện với:

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

Tôi tin rằng đó là thiết lập DPI, không lấy nó. –

+1

Tôi hy vọng rằng, với thẻ này được thêm vào, thiết bị sẽ báo cáo DPI chính xác bằng cách sử dụng một trong các phương pháp được mô tả trong câu hỏi của tôi. Thật không may là không xảy ra, mặc dù, nhưng cảm ơn cho tip. – Felix

Các vấn đề liên quan