Javascript 不应该';t window.screen.width/height是否与实际屏幕宽度/高度相对应?

Javascript 不应该';t window.screen.width/height是否与实际屏幕宽度/高度相对应?,javascript,webkit,window,dimensions,kindle,Javascript,Webkit,Window,Dimensions,Kindle,在新款Kindle 3G中玩弄WebKit浏览器时,我注意到window.screen.width和window.screen.height不能反映实际的屏幕尺寸。物理屏幕(或者更确切地说,纸张)尺寸为800 x 600。我得到: 800 x506横向模式 600 x706纵向模式 但有趣的是,在我的桌面上运行的Chrome和Safari(也是WebKit)都报告了实际的屏幕分辨率 根据,这些属性不是任何规范的一部分,因此可能没有关于宽度/高度的严格定义。但是,难道不应该期望它们反映实际的屏

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

  • 800 x506横向模式
  • 600 x706纵向模式
但有趣的是,在我的桌面上运行的Chrome和Safari(也是WebKit)都报告了实际的屏幕分辨率


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

在许多移动操作系统上,screen.availWidth和screen.width似乎总是返回可用宽度


我找不到任何关于这方面的文档,但我测试了Android 2.2,得到了屏幕大小减去顶部菜单栏的结果,无论用户要求什么。

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

更新:

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

这个问题可能与设备的问题相同?如果在某些尺寸下它们的密度更高。。。无论出于什么原因,这可能会转化为错误的屏幕宽度大小

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


screen.availWidth在emulator上的某些屏幕大小上不适用于我

现在唯一适合我的是:

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

他们在Android的Webkit上有一些这样大小的问题。你可以看到Android的开发者。可能固定在蜂巢里


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

区别在于Android状态栏和/或底部栏的尺寸不同

有趣的是,
navigator.appVersion
报告了
5.0(Linux;U;en-US)AppleWebKit/528.5(KHTML,如Gecko、Safari/528.5)版本/4.0 Kindle/3.0(屏幕600x800;旋转)
。尽管
600x800
位是正确的,但我猜它是硬编码的,不是从系统读取的。所以,你是对的,可能是系统没有正确地(?)报告屏幕尺寸。除了在移动操作系统上的webkit之外,我没有在任何其他设备上测试过这一点,但是我发现了多个故障点和一些其他奇怪之处。第一个奇怪之处是screen.height同时在Linux和webkit(以及它的prefork khtml)上工作。但在kindle和Android上,它失败了,这两个系统的核心都运行linux和webkit。这导致人们开始考虑其他可能性,比如松鼠鱼成为坏数据的传播者。