2011-11-03 69 views
6

我正在開發一個移動網站,並且遇到了一個有趣的問題。Android瀏覽器報告錯誤的屏幕尺寸?

我正在測試我的桌面以及我的摩托羅拉Droid(Android 2.2)。我有媒體查詢設置爲加載3種不同的樣式表(320px寬,480px寬,640px寬)。我注意到我的Droid加載了320px的樣式表,儘管它有一個480x854px的屏幕。我設置了一個小JS來找出屏幕寬度,它報告的是320px。

Android瀏覽器是否在MDPI上運行在HDPI屏幕上?它正確縮放320像素以填充屏幕,但我有點困惑爲什麼會發生這種情況。

此外,我的頁面上有< meta name =「viewport」content =「width = device-width」>,所以這不是問題。

回答

5

儘管擁有完全不同的分辨率,但許多OEM已經選擇基於iPhone(或類似分辨率)的默認瀏覽器視口尺寸進行設置。蘋果公司在iPhone 4上發佈'視網膜顯示器'時出現了類似的問題,其中規格表的狀態爲640px,但screen.width在設置時將返回320px。

正如@omermuhammed所提到的,您的邏輯基於screen.width,CSS @media查詢和/或使用WURFL或DeviceAtlas進行設備檢測。

下面的文章也可能是令人感興趣的幫助澄清這一問題:

像素不是一個像素不被@ppk http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html

0

我不知道在Android瀏覽器的情況下,但我看到Android報告錯誤的屏幕尺寸的手機。我建議將您的邏輯基於用戶代理字符串和屏幕分辨率的組合。這樣你就可以檢測到這款手機並進行不同的處理,並與其他人一起使用正常的機制。

0

像素我注意到一些問題與得到screen.width和screen.height在Android 4.2上。

  • 尺寸未更新以反映設備的方向。

如果您希望先獲取方向,然後相應切換值,則可以更正此問題。

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

http://davidwalsh.name/orientation-change(漂亮matchMedia使用)

  • OS用戶接口元件從實際設備的屏幕尺寸減去。

例如nexus 7的屏幕是1280x800,1205x800的報道。操作系統按鈕爲75px。

  • 理想情況下(在我看來),值應該用CSS像素報告,而不是設備像素。

例如nexus 7,CSS viewport在縱向設置爲600px,但screen.width報告爲800px。所以DPR大約是1。33

總的來說,screen.width和screen.height不是很可靠(iOS也有定位問題)。

我希望很快就會重新編輯這個答案。