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

时间:2016-07-25 17:56:22

标签: webview titanium appcelerator titanium-mobile appcelerator-mobile

我想添加webview,其高度与内容一样。我在Android上顺利运行,但在iOS上文本越长,文本下方的空间越长。

这是我的代码:

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();

提前致谢。

2 个答案:

答案 0 :(得分:2)

webview不知道内容的大小。但是你可以在webview上询问内容的高度。

为此,您需要使用evalJS

使用StackOverflow上的JS:

SELECT O.*
  FROM Outlet O
 LEFT JOIN Transaksi T ON T.Outlet = O.OutletCode
 WHERE T.Days IS NULL

并且最好把它放在webview中的一个函数中。可以说上面的Javascript在函数var body = document.body, html = document.documentElement; var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight ); 中,该函数返回getDocumentHeight属性。现在,要获得高度使用eval,如下所示:

height

现在,您希望每次加载内容时执行此操作(假设内容发生更改),因此在这种情况下您可以观看var height = webview.evalJS('getDocumentHeight()'); webview.height = height; 事件(doc here)并触发{{1}每次触发此事件时都会在上面。

它不会很漂亮,因为webview不是这样扩展的,但是它有效。

答案 1 :(得分:0)

对于iOS来说,这似乎是一个错误/沮丧的方法。没有直接的解决方法。可以在这里查看: Jira Ticket about problem with iOS 9Jira Ticket about problem with webView + ScrollView