javascript - Android Webview onLoad 返回错误的高度

标签 javascript android webview

我正在将 file://url 加载到 web View 中。由于我的 webview 需要展开/折叠,因此我没有使用 WRAP_CONTENT,而是在 android 中的 javascript onPageFinished 事件中计算高度。但每 5 次中就有 2 次,javascript 会报告错误的高度。对于某些手机,它返回更大的高度,而对于较旧的低分辨率手机,它返回比容器更小的高度。

我尝试过使用window.onload。为了保持前面的理智,我必须在 1500 毫秒后执行 setTimeout() 来重新计算高度并调整 webview 容器的大小。

我有什么遗漏的吗?如何着手修复它?

最佳答案

尝试依赖 Android WebView,而不是 HTML 窗口内

Html 窗口(在 JavaScript 运行时执行时)为 320x240 或正确的大小

如果您无法直接访问 WebView 大小,请暂停相关 JavaScript,直到 HTML 窗口调整大小

使用 HTML 窗口加载 SDK 视频叠加层的示例代码

if (!isAndroid() || isAndroidAndResized()) {
    this.translateRelativePosition(params);
    loadVideo(params.id, params.url, params);
} else {
    var relativePosition = {left: params.left, top: params.top};
    var offScreenPosition = {
        left: params.left - params.width - 2000,
        top: params.top - params.height - 2000
    }; // preload video without showing splash overlay at (0, 0)

    params.left = offScreenPosition.left;
    params.top = offScreenPosition.top;
    loadVideo(params.id, params.url, params);

    var positionCachedVideo = function () {
        if (isAndroidAndResized() || Ad.width === 320 && Ad.height === 240) {
            params.left = relativePosition.left;
            params.top = relativePosition.top;
            this.translateRelativePosition(params); // use container absolute position + video relative position (for device overlay)
            playVideo(params.id, params);
        } // make sure WebView is not 320x240 unless Ad size is 320x240
    }.bind(this);

    if (this.getWidth() !== 320 || this.getHeight() !== 240) {
        targetHtmlWindow.addEventListener('resize', positionCachedVideo);
    } else {
        setTimeout(positionCachedVideo, 50);
    }
}

关于javascript - Android Webview onLoad 返回错误的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28404318/

相关文章:

javascript - 无法显示从后端作为对象接收的数据,

javascript - 如何从Python中的字典数组中获取JavaScript中的对象数组?

javascript - Youtube API - 相当于 onTime

ios - PDF 已生成,但文件未在 swift ios 的 webView 中检索

javascript - 是否可以将登录信息从 webview 传递到 android Activity?

javascript - 只允许数字和破折号的文本字段,也接受 ctrl 命令

android - 基于 SQLite 数据库列绘制图形

android - 应用程序仅适用于 mdpi (320x480...)

java - 覆盖 color.xml 文件中的颜色值

Android 模拟器在 webview 中的 loadUrl 后多次卡住