4

http://jquerymobile.com/demos/1.1.0/docs/about/getting-started.htmlで説明されているように、jquerymobileが散在しているHelloWorldphonegapプログラムが動作しています。クロスオリジンリソースシェアリングを試すために、これに小さなJavaScriptを追加しました。

<script>
$(document).bind("pageinit", function() {
    $.support.cors = true;
    $.mobile.allowCrossDomainPages = true;
    $.mobile.changePage("http://jquery.com");
});
</script>

これはエミュレーター(2.3)でうまく機能し、jquery.comはjqueryモバイルデモに読み込まれます。ただし、実際の2.3 Androidデバイス(Cyanogen、Galaxy SII、GalaxyPlayerを実行しているT-mobileG2)では、changePage()呼び出しは何もしません。

4

2 に答える 2

4

$.mobile.changePage()関数内で関数を呼び出すpageinitと、無限ループが発生するため、悪い考えのように聞こえます。この$.mobile.changePage()関数は、targetパラメーターとして指定されたページを初期化するため、呼び出すたび$.mobile.changePage()にイベントも発生しpageinitます。

jQuery Mobileが初期化される前に、イベントにバインドして変数mobileinitを上書きすることをお勧めします。$.support.cors

<script src="jquery.js"></script>
<script>
$(document).bind("mobileinit", function() {
    $.support.cors = true;
    $.mobile.allowCrossDomainPages = true;
    $.mobile.changePage("http://jquery.com");
});
</script>
<script src="jquery-mobile.js"></script>

関連ドキュメント:

于 2012-07-16T18:33:36.557 に答える
1

mobileinitの代わりに試してくださいpageinit。バインドするイベントは通常のjQueryであり、jQuery mobileの場合、初期化イベントはmobileinitです。

The $.mobile.allowCrossDomainPages option must be set before any cross-domain request is made so we recommend wrapping this in a mobileinit handler

于 2012-07-14T23:02:45.200 に答える