1

对于我的移动网络应用程序,我正在尝试获取设备的屏幕宽度以动态适应视图。

我真的很困惑为什么摩托罗拉 Atrix Atrix MB860 报告的宽度为 800 像素。当我看到这个设备的规格时,它的分辨率是 540x960。为什么在javascript中它报告800px?我使用了这个测试页面: http ://www.quirksmode.org/m/tests/widthtest.html 来自摩托罗拉 atrix 的屏幕截图

我在几台设备上测试了上面的页面,除了摩托罗拉 atrix 之外,它们都正确地报告了宽度。例如,galaxy s2 报告 480px,nexus 7 报告 1280px

4

1 回答 1

2

这是 Android 2.3 的奇怪行为。我在这里发现:http: //tripleodeon.com/2011/12/first-understand-your-screen

然而,在常规浏览器场景中,Android v2.3 显示出更奇怪的行为。它的 screen.width 总是以 800 开头——这显然是某种虚拟视口,而不是物理屏幕。但是当文档具有 XHTML-MP doctype 或受约束的视口(对于任何 doctype)时,值将在文档加载事件发生时切换为您可能期望的 320 或 480。

window.outerWidth 应该可以解决问题或将视口宽度设置为设备宽度

<meta name="viewport" content="width=device-width, user-scalable=no" />
于 2013-01-16T22:05:12.177 回答