1

序文: 私は Coffeescript と Haml を使用し、PhoneGap ビルドを使用して Android フォンでテストしています。

phonegap アプリ用にサーバーでコンパイルされている外部スクリプトを読み込もうとしています。ページをローカルでテストするとすべてが機能しますが、実際のデバイスでテストすると、スクリプトを取得していないようです。index.html にスクリプトを正常にロードしようとしました。

%script{:type => 'text/javascript', :src => "http://192.168.5.112:3000/assets/mobile.js"}

また、jQuery の getScript、get、および ajax 呼び出しを使用してみました。

$.getScript('http://192.168.5.112:3000/assets/mobile.js', alert('Success'))

$.get 'http://192.168.5.112:3000/assets/mobile.js', (data) -> alert 'Success server' + data

$.ajax 'http://192.168.5.112:3000/assets/mobile.js',
  error: (jqXHR, textStatus, errorThrown) ->
    alert('localError: ' + jqXHR + textStatus + errorThrown)
  success: (data, textStatus, jqXHR) ->
    alert('localSuccess: ' + data + textStatus + jqXHR)

これらすべてでアラートが成功しましたが、まだスクリプトがロードされていません。また、config.xmlでサーバーをホワイトリストに登録しました

<access origin="http://192.168.5.112:3000" subdomains="true" />

まだ運がありません。問題をデバッグするために weinre を最大限に使用していますが、スクリプトがネットワーク パネルにまったく表示されないか、ネットワーク パネルに表示されても内容がありません。

どんなアイデアでも大歓迎です!

4

1 に答える 1

2

192.168 はローカル ホスト IP です。PC で実行すると、PC でファイルが検索されます。電話で実行すると、電話でファイルを探します。それはうまくいきません。常に JS ファイルをダウンロードし、プロジェクトに含めてください。プロジェクトの /js フォルダーの下に含める場合は、次のように HTML の head タグに含めます。

<script src="js/myScript.js"></script>

ドメインなどをホワイトリストに登録する必要はありません。

JS ファイルが公開されている場合 (つまり、あなただけでなく誰でも http:// 経由でアクセスできる場合)、次を使用できます。

<script src="http://www.serverWhereTheScriptIs.com/myScript.js"></script>

ただし、スクリプト (例 2) をダウンロードしようとすると、他の問題が発生する可能性があります。たとえば、ユーザーがアプリを使用したいが、インターネットに接続していないとします。アプリはそれ自体で吐き出します。接続できる場合でも、アプリの読み込み時間が長くなります。速度が遅い/動作しないアプリを使用するよりも、JS ライブラリが含まれているため、より大きなアプリを使用する方が常に優れています。

于 2013-09-03T10:18:50.477 に答える