我正在使用 android 的 webview 显示一些 html,并在 DOM 准备好时执行 javascript;但是 screen.width 给出了错误的值,除非我在查询它之前使用了一些超时(在模拟器和真实设备上)
问题出在高/低密度的设备上。例如,尺寸为 480 X 800 的高密度设备将产生 320 x 533 的屏幕(屏幕宽度和高度均除以 1.5),而对于尺寸为 240x320 的低密度屏幕,它将产生 320x426(同样,它除以宽度和高度均为 0.75)。
当我应用一些 css 并将 body 的宽度设置为 100% 时,它会闪烁,因为 body 的宽度被设置为 320px,半秒后它又被设置了,这次是 480px 的实际大小。
在应用某些 css 之前使用计时器来查询屏幕的宽度和高度是 Not Acceptable ,因为在不同的设备上,需要不同的时间间隔(300 毫秒,500 毫秒) - 如何在不同的屏幕尺寸上应用 css
模拟器:
FWQVGA (240×432, low density, normal screen)
HVGA (320×480, medium density, normal screen)
WVGA800 (480×800, high density, normal screen)
这个问题有什么解决办法吗?
最佳答案
默认情况下,WebView 会缩放网页,以便以与中等密度屏幕上的默认外观相匹配的尺寸绘制网页。因此,它在高密度屏幕上应用 1.5 倍缩放(因为它的像素较小),在低密度屏幕上应用 0.75 倍缩放(因为它的像素较大)。
你可能会读到这个: “构建网页以支持不同的屏幕” @ http://developer.android.com/reference/android/webkit/WebView.html
关于javascript - Android webview javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8692902/