0

私はチタンに比較的慣れていません。ローカルの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

ありがとう。

4

2 に答える 2

3

モバイル デバイス用のビューポート メタ タグが必要です。

<meta name="viewport" content="width=device-width,user-scalable=yes,initial-scale=1">

于 2013-04-03T21:09:24.177 に答える
0

回答ありがとうございますが、この質問の回答を見つけようとしたところはどこでも、あなたが言及したのと同じ回答が見つかりました(したがって、あなたの回答は間違いなく正しいです)が、私はこの行を手動で追加できないと前述しました。これらのファイルを制御できるので、これはもう機能しません。

上記のメタタグを動的に追加する方法も示しましたが、それも機能しませんでした。

だから今私がしたことは、htmlが保存されているファイルのハンドルを取り、</head> タグを置き換えて<meta name="viewport" content="width=device-width,user-scalable=yes,initial-scale=1"></head>、このファイルを独自の場所に保存したことです。ファイルが正常に書き込まれたら、webview.url = file.nativepath を使用してアクセスします。:)そして今、すべてがうまくいっています。

これは、私のように同じことをしようとしている人にとって役立つかもしれません。ここでは、ファイル編集ファイルにアクセスしてからこのファイルに再度アクセスしているため、プロセスが遅くなりますが、これは少なくとも機能しています。誰かがより正確または賢明な答えを持っている場合は、ここで答えることができます。

于 2013-04-08T16:09:57.743 に答える