内容的 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
我想添加高度与其内容一致的 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