WebView 返回错误的 window.innerHeight

2024-04-01

我有一个使用 Android WebView 以及一些 JavaScript 的应用程序。当我的 WebViewClient 调用时onPageFinished(),我提醒 JavaScript 运行初始化方法。我的 JavaScript 在我点击之前已启用并加载onPageFinished().

在那个 JavaScript 方法中我使用window.innerWidth。然而,它返回的值总是错误的并且总是相同的。无论我的方向如何,它都会报告内部宽度为 320,内部高度为 240。(纵向和横向的正确宽度值分别为 360 和 598。)我访问的其他任何地方window.innerWidth or window.innerHeight在 JavaScript 中,它给了我一个准确的数字。

更令人费解的是,如果我直接在我的中检查WebView的高度或宽度onPageFinished()呼叫使用

int height = view.getHeight();

int width = view.getWidth();

那么它总是正确返回(尽管它返回精确的像素数,而不是 DIP)。这让我认为 WebView 的所有内容都已完成加载,因此我的 JavaScript 中不应该有任何问题。

对于发生的事情有什么想法吗?

提前致谢!


这是因为Javascript在WebView的View相关初始化之前执行。而Android WebView向JS返回一个320x240的默认值。 一段时间后执行你的JS就可以了,就像这样

function go() {
int height = view.getHeight();
int width = view.getWidth();
};
window.setTimeout(go, 300);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebView 返回错误的 window.innerHeight 的相关文章