关于javascript:window.screen.width / height是否与实际的屏幕宽度/高度相对应?

Shouldn't window.screen.width/height correspond to actual screen width/height?

在新版Kindle 3G中使用WebKit浏览器玩耍时,我注意到window.screen.widthwindow.screen.height不能反映实际的屏幕尺寸。 物理屏幕(或更确切地说,纸张)尺寸为800 x600。我得到:

  • 横向模式下为800 x 506
  • 纵向模式下为600 x 706

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

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


更新:

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

这件事可能与设备的问题相同吗?如果它们的密度在某些尺寸下更高...出于何种原因,这可能会导致屏幕宽度尺寸错误?

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

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

现在唯一对我有用的是:

1
2
window.innerWidth
window.innerHeight

它将返回视口的值。就我而言,我正在运行HTML5应用。显然,此值不会在缩放时更新。

他们在Android的Webkit上有这种大小的问题。您可以在此处看到来自Android的开发人员在谈论它。可能固定在蜂窝中。

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


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


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

我找不到任何文档,但是我确实测试了Android 2.2,无论请求什么,屏幕尺寸都会减去顶部菜单栏。


区别在于Android状态栏和/或底部栏的大小。