7

在新的 Kindle 3G 中玩弄 WebKit 浏览器时,我注意到了这一点,但window.screen.widthwindow.screen.height没有反映实际的屏幕尺寸。物理屏幕(或者更确切地说,纸张)尺寸为800 x 600。我得到:

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

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

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

4

4 回答 4

9

更新:

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

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

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


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

现在唯一对我有用的是:

window.innerWidth
window.innerHeight

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

他们在 Android 的 Webkit 上对这种尺寸有一些问题。你可以在这里看到来自 Android 的开发者在谈论它。可能固定在蜂窝中。

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

于 2011-03-03T17:31:13.567 回答
1

我认为如果 WebKit 从系统中得到错误的值,它什么也做不了。当然这些值应该由screen.availWidth和screen.availHeight表示,但我认为这与鼠标(指针)位置的event.screenX和event.screenY有关。

于 2010-09-13T16:19:06.080 回答
1

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

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

于 2010-09-13T16:14:01.157 回答
0

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

于 2013-10-18T17:06:22.637 回答