0

コンテンツの高さになるwebviewを追加したいと思います。私はAndroid上でスムーズに動くようにしますが、iOS上ではテキストの長さがテキストよりも長いほど長くなります。事前にiOS(Appcelerator Titanium)でコンテンツへのWebviewの自動高さが機能しない

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

webviewはコンテンツのサイズを知りません。しかし、コンテンツの高さをWebビューで確認できます。

この場合、evalJSを使用する必要があります。

JSを使用してはStackOverflowで見つかった:

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

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

、好ましくはWebViewの内部機能でこれを置きます。上記のJavascriptは関数getDocumentHeightであり、その関数はheightプロパティを返します。あなたは、これはあなたがloadイベントを見ることができ、その場合におけるので、コンテンツの変更を想定して、コンテンツがロードされるたびに実行したい、今すぐ(doc here)を

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

:さて、このような高さの使用はevalを取得しますこのイベントが発生するたびに上記のevalJSをトリガーします。

webviewはこのように縮尺されているわけではありませんが、それは機能します。

+1

は、これはかなりないが同意するが、私はそれを動作させるために発見した唯一の方法。そして私は何年も努力しました! –

+0

このメソッドは、Ti.UI.SIZEと同じ高さを返します。たとえば、テキスト: '一部のページsome text2いくつかのページsome text2いくつかのページsome text2'は高さ:240を返します(Androidの場合は38で適切な値です)ので、下にはまだギャップがあります。コードを試してください。 – kreatywny

+0

奇妙なことは、高さがライン関数として増加していないことです。たとえば、iOSの240が実際の高さよりも240(〜6.31x)、7060の場合は実際の高さが931(〜7.58x)です。この値はすべてのiOSデバイス(iPhone 5/6、iPad Pro)で同じですが、驚くべきことです(Iphone 5のギャップがiPad Proよりも小さい)。 – kreatywny

関連する問題