window.screen.width / height不应该与实际的屏幕宽度/高度相对应吗?

时间:2010-09-13 15:52:15

标签: javascript webkit window dimensions kindle

在新的Kindle 3G中使用WebKit浏览器,我注意到window.screen.widthwindow.screen.height并未反映实际的屏幕尺寸。物理屏幕(或更确切地说,纸张)尺寸 800 x 600 。我明白了:

    横向模式
  • 800 x 506
  • 600 x 706 处于纵向模式

但有趣的是,我桌面上运行的Chrome和Safari(也是WebKit)都会报告实际的屏幕分辨率。

根据MDC,这些属性不是任何规范的一部分,因此可能没有严格定义宽度/高度应该报告的内容。但是,它们是否应该反映实际的屏幕尺寸呢?

4 个答案:

答案 0 :(得分:5)

更新

我们在使用window.screen.width的模拟器中看到的问题是当我们使用不反映设备实际像素的屏幕时。所以你在屏幕上看到的是320,设备有480或者其他什么。但是,我不明白为什么屏幕宽度的值会给屏幕上的模拟器大小而不是实际像素。

这件事与设备可能存在同样的问题?如果它们的密度在某些尺寸上更高......无论出于什么原因,这可能会导致一些错误的屏幕宽度尺寸?

无论如何,请阅读下面的解决方案。


screen.availWidth在模拟器上的某些屏幕尺寸上对我不起作用。

现在唯一对我有用的是:

window.innerWidth
window.innerHeight

这将返回视口的值。在我的情况下,我正在运行HTML5应用程序。显然,此值不会在缩放时更新。

他们在Android的Webkit上遇到了这些尺寸的问题。您可以在Android talking about it here中看到开发者。可能固定在Honeycomb。

有人声称它需要一些尺寸,好像软键盘一样。

答案 1 :(得分:1)

在许多移动操作系统上,似乎screen.availWidth和screen.width都会一直返回availWidth。

我无法找到任何关于此的文档但是我测试了Android 2.2并且无论要求是什么,屏幕尺寸都会减去顶部菜单栏。

答案 2 :(得分:1)

我认为如果从系统中获取错误的值,WebKit就无能为力。当然这些值应该由screen.availWidth和screen.availHeight表示,但我认为这与event.screenX和event.screenY鼠标(指针)位置有关。

答案 3 :(得分:0)

不同之处在于Android状态栏和/或底栏的大小。