内容的 Webview 自动高度不适用于 iOS (Appcelerator Titanium)

Webview autoheight to content is not working on iOS (Appcelerator Titanium)

我想添加高度与其内容一致的 webview。我在 Android 上顺利 运行 但在 iOS 上文本越长 space 下面的文本是。

这是我的代码:

var window = Ti.UI.createWindow();

var scrollView = Ti.UI.createScrollView({
    layout: 'vertical',
    height: Ti.UI.SIZE
});

    var view1 = Ti.UI.createView({
        height: 200,
        backgroundColor: 'red'
    });

    var webview = Ti.UI.createWebView({
        height: Ti.UI.SIZE,     
        html: '<html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"></head><body style="margin:0; background-color: blue">Some page some text2</body></html>'
    });

    var view2 = Ti.UI.createView({
        height: 200,
        backgroundColor: 'green'
    });

    scrollView.add(view1);
    scrollView.add(webview);
    scrollView.add(view2);

    window.add(scrollView);

window.open();

提前致谢。

webview 不知道内容的大小。但是你可以问webview内容有多高

为此您需要使用 evalJS

使用在 Whosebug 上找到的 JS:

var body = document.body,
    html = document.documentElement;

var height = Math.max( body.scrollHeight, body.offsetHeight, 
                       html.clientHeight, html.scrollHeight, html.offsetHeight );

最好将它放在 webview 中的函数中。假设上面的 Javascript 在函数 getDocumentHeight 中,函数 returns 在 height 属性 中。现在,要获得高度,请像这样使用 eval:

var height = webview.evalJS('getDocumentHeight()');
webview.height = height;

现在,假设内容发生变化,您希望每次加载内容时都执行此操作,因此在这种情况下您可以观看 load 事件 (doc here) 并触发 evalJS 每次触发此事件时。

它不会很漂亮,因为 webview 不打算像这样缩放,但它确实有效。

这似乎是 iOS 的错误/不鼓励的方法。没有直接的解决方法。可以在这里检查: Jira Ticket about problem with iOS 9, Jira Ticket about problem with webView + ScrollView