4

Windows Phone 7 にアプリを展開するために Phonegap/Cordova 2.3.0 を使用しています。アプリケーションは Require.js を使用してすべてのモジュールを動的に読み込みます。1 つのモジュールは「ルーター」と呼ばれ、ローカル ファイルから静的な html をフェッチし、その内容を<div>. これは iPhone、iPad、および Windows Phone 8 で動作します。しかし、WP7 では奇妙なことが起こっています。

からのサンプルコードrouter.js:

//path that works with WP8
var path = "www/views/";
$.ajax({ url: path + "test3.html" })
                .done(function(html) {
                    alert(html); //result from Windows Phone 8
                }).fail(function(error) {
                    alert(error); //result from Windows Phone 7
                });

WP7 でのテスト時に表示されるエラーは 404 Not Found です。

main.js上記の正確なコードを(require.js エントリ ポイント) または にコピーでき、エラーなしで実行されるため、「何か奇妙なことが起こっています」と言いindex.htmlます。しかし、そのコードを に入れるとrouter.js、エラーが返されます。

いくつかの観察:

  • router.jsは と同じフォルダ ( /www/js) にありmain.jsます。
  • index.htmlフォルダにあり/wwwます。
  • 私は、機能するものに出くわすことを期待して、考えられるすべてのパスの組み合わせについて試しました。/app/www/viewsapp/www/views/www/viewswww/views/viewsviewsさらにx-wmapp0:/app/www/viewsx-wmapp1:/app/www/views
  • 明らかに、私は非常に単純化された例を提供しました。さらに必要な場合は、教えてください。
4

2 に答える 2

3

以下は、問題を理解するのに役立つ場合があります

1)Cordova WP7のローカルファイルへのアクセスは、File.cs(\テンプレート\スタンドアロン\cordovalib \ Commands \ File.cs).readAsTextメソッドを介して行われます。したがって、コンパイルされたdllの代わりに完全なcordovalibを添付して、Cordovaがそのファイルを見つけようとする場所を確認できます。

2)ajaxリクエストとローカルファイル間の変換はXHRPatch(cordova-2.3.0.js)で行われるため、ここのどこかにuriトレースを追加してみてください (console.log(uri);)

于 2013-01-28T20:24:27.300 に答える
0

私が現在使用している Cordova 2.7.0 では (Windows Phone 8 では - WP7 では異なる場合があります!)、アプリケーションのルート (wwwディレクトリではなく) に対する相対パスで参照する必要があるようです!つまり、から行くwww/path/to/my/file.js

それが役に立てば幸いです-それは私にとって混乱していました!

于 2013-06-12T19:19:42.440 に答える