2011-11-03 60 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也有定位问题)。

我希望很快就会重新编辑这个答案。