私はチタンに比較的慣れていません。ローカルのhtml/xmlをwebviewにロードしています。iOSではすべてが自動的に処理されます(コンテンツの表示)が、Androidでこれをチェックすると、Webviewのコンテンツに余分なスペースがあり、コンテンツはジャンプとバウンスで表示されますが、これは決して受け入れられません。合金構造を使用しています。ローカルファイルにメタタグ(ビューポート)を静的に追加すると、空白がなくなります。ただし、ローカルファイルを動的にロードする必要があるため、ローカルファイルを編集できません。したがって、これらのファイルを編集すると、次のようにwebviewのロードメソッドがオーバーライドされます:-
$.webview.addEventListener('load', function(e) { $.webview.evalJS("var m=document.createElement(\"meta\");m.name = \"viewport\";m.content = \"width=" + scrwidth + ", user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1\";document.getElementsByTagName(\"head\")[0].appendChild(m);"); });
ただし、webviewのhtmlには影響しません。これを確認するために、evalJSの後に1つのファイルを書き込むので、evalJSが影響していることを確認できます。
var jsString = 'var s=document.createElement("script");' + 's.innerHTML="' + 'sdfsdfsdfsd' + '";' + 'document.getElementsByTagName("head")[0].appendChild(s);'; $.webview.evalJS(jsString);
var resFile = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, "response.html"); resFile.write($.webview.html);
アプリケーションデータディレクトリでこのファイルを確認すると、iOSではこの効果を確認できます(ローカルhtmlのコンテンツのみが表示されます)が、Androidでは追加したスクリプトを確認できません。応答ファイルを確認すると、どこから来たのかわからないjavascritで始まり(ネイティブのwebviewのhtmlからだと思います)、スクリプトが終了した後、htmlは表示されますが、ロード時に手動で追加したスクリプトは表示されません。私はこの問題について読みましたが、すべてがビューポートメタタグソリューションを提供しましたが、私の場合、どれだけ試してもコンテンツを収めることができません。それで、皆さんは私がどこで間違っているのか教えてもらえますか?androidでwebviewのhtmlを編集するための特別な許可はありますか(編集されていないため)。
アプリケーションタイプ:-モバイルTitanium SDK:-3.0.2プラットフォームとバージョン:-Android 2.2デバイス:-htc Nexus / mototrolaズームホストオペレーティングシステム:-Mac OS 10.8.2 Titanium Studio:-3.0
ありがとう。