13

これは、mobileinit イベントにフックしようとしている方法です。

$(document).bind("mobileinit", function() {
    console.log("Mobile init");
});

しかし、これは Chrome (最新バージョン)、Ripple v0.9.1、および OS7.0 を実行する BlackBerry bold 9790 では機能しません。

注:.on()代わりに使用してみまし.bind()たが、うまくいきませんでした。jQuery モバイル バージョン (1.0.1 および 1.1.0) は両方とも失敗しました。

4

2 に答える 2

47

私はこれを使用しましたが、うまくいきます

他の何かがスクリプトを壊している可能性や、mobileinit が起動されていない可能性はありますか?

Chrome は mobileinit を起動しますか?

jQuery Mobile 1.0 で使用していたコードを見つけて、1.1.0 にアップグレードしたところ、動作しました。

通常の古い jQuery も含めるようにしていますね。

jQueryMobile のドキュメントはそれを行うので、うまくいくと確信しています。他に何か問題があるはずです。申し訳ありませんが、私はあまり役に立ちません。もっと情報はありますか?または、別のデバイスで試してください。

[編集]その同じ自己ページには、「mobileinit イベントがすぐにトリガーされるため、jQuery Mobile が読み込まれる前にイベント ハンドラーをバインドする必要があります。次の順序で JavaScript ファイルにリンクしてください:」と書かれています。

<script src="jquery.js"></script>
<script src="custom-scripting.js"></script> <!-- Note your script before jqm -->
<script src="jquery-mobile.js"></script>

スクリプトの順序が重要になるようです。

于 2012-04-18T17:06:29.753 に答える
5

これは、私と一緒に機能する別の簡単な例です(AndroidおよびiOSの場合)

<script type="text/javascript" src="files/resources/lib/jquery/jquery-1.8.2.js"> </script>
<script type="text/javascript">
$(document).bind("mobileinit", function()
                 {
                 if (navigator.userAgent.toLowerCase().indexOf("android") != -1)
                 {
                 // your logic here
                 $.mobile.defaultPageTransition = 'none';
                 $.mobile.defaultDialogTransition = 'none';
                 }
                 if (navigator.userAgent.toLowerCase().indexOf("msie") != -1)
                 {
                 // your logic here
                 $.mobile.allowCrossDomainPages = true;
                 $.support.cors = true;
                 }
                 });
</script>
<script type="text/javascript" src="files/resources/lib/jquerymobile/1.3.2/jquery.mobile-1.3.2.js"></script>
  1. メインのjqueryファイルを含める
  2. jquery mobileの前にmobileinitをバインドする
  3. jquery モバイル js ファイルを含める
于 2013-12-22T21:49:50.763 に答える