3

基本的に、ハッシュリスニングとすべてを自分のコードで処理したいのですが、jQMにハッシュ変更イベントのリスニングを停止させて、一般的にURLをいじくり回すことはできません。私は彼らのドキュメントからコードを試しました:

$(document).bind('mobileinit', function() {
    $.extend($.mobile, {
        hashListeningEnabled: false,
        pushStateEnabled: false,
        ajaxEnabled: false,
        linkBindingEnabled: false
    });
});

ただし、mobileinitイベントは、最初のページの読み込み時に発生することはないので(そうあるべきだと思われますが)、それは私には機能しません。コードを実行させるのは、コードを$(window).bind('load')に配置することです。Firebugコンソール$.mobile.hashListeningEnabled === falseで、値が適切に設定されていることを確認できますが、そうではないようです。何でもする!たとえば、<mysite>/index.htmlアドレスバーに入力すると、デフォルトのページが読み込まれますが、入力<mysite>/index.html#anythingすると、jQM読み込みスピナーが表示され、何も読み込まれません(data-role=anythingデフォルトであるファイル内のページを探しているためだと思います)機能)。さらに、サポートされているブラウザでURLバーを実行すると、期待どおりではなく、が表示されるため、pushStateEnabledオーバーライドも明らかに機能していません。window.location.hash = /somethingelse.htmlhttp://<mysite>/somethingelse.htmlhttp://<mysite>/index.html#somethingelse.html

基本的に、私が望んでいるのは、jQuery MobileがページレイアウトとDOM操作を処理することであり、他には何もありません。これは可能ですか?

4

1 に答える 1

4

これらが設定する正しいプロパティであるかどうかはわかりませんが(ドキュメントを確認しませんでした)、以前にこの問題がありました。それを解決するには、スクリプトを含める前にイベントをバインドする必要があるため、次のようにします。

<script type="text/javascript">
    $(document).bind('mobileinit', function() {
        $.extend($.mobile, {
            hashListeningEnabled: false,
            pushStateEnabled: false,
            ajaxEnabled: false,
            linkBindingEnabled: false
        });
    });
</script>
<script src="//code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>

これを行う必要がある理由はmobileinit、jquery モバイル ファイルが読み込まれるときにイベントが発生するためです。

于 2012-07-12T14:12:47.130 に答える