2011-11-03 67 views
6

Tôi đang phát triển một trang web trên thiết bị di động và tôi đã gặp phải một vấn đề thú vị.Trình duyệt Android báo cáo kích thước màn hình sai?

Tôi đang thử nghiệm trên máy tính để bàn của mình, cũng như trên Motorola Droid của tôi (Android 2.2). Tôi có các truy vấn phương tiện được thiết lập để tải 3 bảng định kiểu khác nhau (rộng 320px, rộng 480px và rộng 640px). Tôi nhận thấy rằng Droid của tôi đang tải biểu định kiểu 320px mặc dù có màn hình 480x854px. Tôi thiết lập một JS nhỏ để tìm hiểu chiều rộng màn hình là gì và nó đang báo cáo 320px.

Trình duyệt Android có chạy trong MDPI trên màn hình HDPI không? Nó mở rộng 320px đúng cách để lấp đầy màn hình, nhưng tôi hơi bối rối vì sao điều này lại xảy ra.

Ngoài ra, tôi có < meta name = "viewport" content = "width = device-width" > trên trang của tôi, vì vậy đó không phải là vấn đề.

Trả lời

5

Nhiều OEM đã chọn đặt thứ nguyên chế độ xem trình duyệt mặc định dựa trên thứ nguyên của iPhone (hoặc các độ phân giải tương tự) mặc dù có độ phân giải hoàn toàn khác nhau. Apple đã có một vấn đề tương tự với việc phát hành 'màn hình võng mạc' trên iPhone 4, nơi bảng thông số trạng thái 640px trên, nhưng screen.width sẽ trở lại 320px khi được thiết lập.

Như @omermuhammed đã đề cập cơ sở logic của bạn trên screen.width, CSS @media queries AND/OR phát hiện thiết bị bằng WURFL hoặc DeviceAtlas.

Bài viết sau đây cũng có thể quan tâm trong việc giúp đỡ để làm rõ vấn đề này:

Một điểm ảnh không phải là một điểm ảnh được không phải là một điểm ảnh bằng @ppk http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html

0

Tôi không biết trong ngữ cảnh Trình duyệt Android, nhưng tôi đã thấy thiết bị cầm tay mà Android báo cáo kích thước màn hình sai. Tôi sẽ khuyên bạn nên căn cứ logic của bạn trên một sự kết hợp của chuỗi tác nhân người dùng và độ phân giải màn hình. Bằng cách này bạn có thể phát hiện chiếc điện thoại này và xử lý khác nhau, và sử dụng các cơ chế bình thường với những người khác.

0

tôi đã nhận thấy một số vấn đề với nhận screen.width và screen.height trên Android 4.2.

  • Kích thước không được cập nhật để phản ánh hướng của thiết bị.

Bạn có thể sửa lỗi này nếu bạn muốn bằng cách định hướng đầu tiên, sau đó chuyển các giá trị tương ứng.

http://menacingcloud.com/?c=orientationScreenWidth

http://davidwalsh.name/orientation-change (thoải mái sử dụng matchMedia)

  • OS yếu tố giao diện người dùng được trừ vào kích thước màn hình thiết bị thực tế.

Ví dụ: nexus 7 màn hình là 1280x800, 1205x800 được báo cáo. 75px cho các nút OS.

  • Lý tưởng nhất (theo ý kiến ​​của tôi), giá trị phải được báo cáo bằng CSS pixel, không phải pixel của thiết bị.

Ví dụ: nexus 7, CSS viewport được đặt thành 600px theo chiều dọc, nhưng screen.width báo cáo 800px. Vì vậy, DPR là khoảng 1.33

Nhìn chung, screen.width và screen.height không đáng tin cậy (iOS cũng có vấn đề định hướng).

Tôi hy vọng sẽ chỉnh sửa lại câu trả lời này sớm hơn.

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