2009-06-01 30 views
18

Tôi muốn programmaticaly xác định DPI của màn hình của người dùng để hiển thị một trang web với số đơn vị chính xác (cm/inch). Tôi biết đó là một yêu cầu kỳ lạ: nó là một dự án nghiên cứu trực quan và nó là loại kiểm soát. Chúng tôi hiện đang thực hiện việc này bằng cách để người dùng đặt thẻ tín dụng vào màn hình và khớp với div có thể thay đổi kích thước (qua Mootools) vào thẻ tín dụng thực và chúng tôi có thể nhận được DPI và hiển thị trang chính xác.Xác định DPI theo chương trình thông qua trình duyệt?

Có ai có thể nghĩ cách lập trình để thực hiện việc này không?

+0

có thể trùng lặp của [Phát hiện hệ thống DPI/PPI từ JS/CSS?] (Http://stackoverflow.com/questions/279749/detecting-the-system-dpi-ppi-from -js-css) – Endless

Trả lời

3

Nếu bạn đang làm điều này trong javascript/mootools, CSS units là bạn của bạn. Bạn có thể chỉ định kích thước tính bằng inch hoặc cm hoặc thậm chí là điểm (1/72 inch). Nếu bạn hoàn toàn cần DPI vì bất kỳ lý do gì mặc dù bạn có thể chỉ định kích thước trong các đơn vị đó, chỉ cần kích thước div "có thể thay đổi kích cỡ" mà bạn đang sử dụng với kích thước đã biết và tính toán từ kích thước pixel đã dịch.

Edit:

Thật không may, các đơn vị CSS của điểm, cm, và không phải là thể chất đúng. Chúng chỉ tương đối chính xác. Đây là điều đầu tiên tôi cố gắng cho đến khi tôi nhận ra rằng không phải là đang hoạt động và đã kiểm tra thông số CSS .. đến sự mất tinh thần của tôi. - Brandon Pelfrey

Đó là một điểm tốt; trình duyệt có xu hướng giả mạo nó bằng cách giả định một DPI mặc định (tôi nghĩ 72 hoặc 96) và đi với điều đó.

Vâng, nếu bạn cần kích thước chính xác như bạn đang yêu cầu, bạn sẽ không may mắn. Bạn sẽ không bao giờ có thể nhận được nó mà không thể đọc cả độ phân giải hiện tại của màn hình mà trình duyệt đang bật và "vùng màn hình có thể xem" của màn hình đó. Không có cách nào bạn sẽ nhận được điều đó thông qua Javascript.

Tôi khuyên bạn nên đặt giả định mặc định là trình duyệt và kích thước theo đơn vị CSS. Sau đó, bạn có thể cho phép người dùng của mình "điều chỉnh kích thước" bằng phương pháp bạn đã đề cập, nhưng chỉ nếu cần thiết. Làm điều này với trên một trang riêng biệt với tính toán DPI được lưu trữ như một phần của phiên người dùng hoặc dưới dạng cookie.

Ngoài ra, khi Microsoft sửa lỗi this bug, bạn có thể sử dụng "đơn vị độc lập thiết bị" của Silverlight để chia tỷ lệ chính xác.

+1

Thật không may, các đơn vị CSS của các điểm, cm và in không đúng về mặt vật lý. Chúng chỉ tương đối chính xác. Đây là điều đầu tiên tôi đã cố gắng cho đến khi tôi nhận ra nó không hoạt động và kiểm tra thông số CSS .. để mất tinh thần của tôi. –

+1

Liên kết tới các Đơn vị CSS hiện là: http://www.w3schools.com/cssref/css_units.asp – Christian

+0

Đã cập nhật, nhờ @Christian – Randolpho

2

Bạn không thể. DPI là một chức năng của độ phân giải pixel của màn hình và kích thước vật lý của màn hình. Cái sau không có sẵn trong bất kỳ giao diện trình duyệt nào mà tôi biết.

0

Tôi nghĩ rằng bạn sẽ không nhận được kết quả chính xác - ví dụ bạn có thể thay đổi kích thước hình ảnh bằng cách sử dụng màn hình. Tôi muốn gắn bó với phương pháp hướng người dùng, mặc dù bạn có thể f.e. phát hiện độ phân giải màn hình cho ước tính đầu tiên.

0

Không thể từ trình duyệt không có mã chạy trên máy tính đích. Nếu bạn có thể cài đặt một cái gì đó trên máy tính mục tiêu, bạn có thể xác định đủ về màn hình để tính toán điều này.

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