4

最初のページが読み込まれる前に、JQM を利用してオーバーライドする方法を探しています。

JQM は次のように初期化します (最新の JQM コードから):

( function( $, window, undefined ) {
    var $html = $( "html" ),
    $head = $( "head" ),
    $window = $( window );

    // trigger mobileinit event 
    $( window.document ).trigger( "mobileinit" );

    ... 

    $.extend($.mobile, {
        // find and enhance the pages in the dom and transition to the first page.
        initializePage: function() {

            ...
            // alert listeners that the pagecontainer has been determined for binding
            // to events triggered on it
            $window.trigger( "pagecontainercreate" );
            ...

したがって、利用できる2 つのイベントがあります: mobileinitpagecontainercreateです。私はこれが次のようにHTMLから簡単であることを知っています:

<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
    $( window ).bind( 'pagecontainercreate', function() {
        console.log("HELLO");
        });
</script>
<script type="text/javascript" src="jquery.mobile-1.1.0.multiview_con.js"></script>   
<script type="text/javascript" src="plugin.js"></script>

しかし、JQM の後に座っている INSIDE plugin.js からこれらのイベントにバインドしたい場合はどうすればよいでしょうか? plugin.js 内に同じリスナーを配置すると、起動しません。遅すぎるからだと思います。しかし、デフォルトが最初のページをロードするのを防ぐ必要があるため、JQM が最初のページをロードしようとするとすぐに手遅れになります。

質問:
JQM の後に配置されたプラグインから最初のページの読み込みが開始される前に、これらのイベントのいずれかまたはその他のイベントの発生をリッスンする方法はありますか?

EDIT : pageinit
は使用できません。これは、最初のページへの呼び出しの後に起動するためです。プラグイン内から起動しないpageCreateのディト。

4

1 に答える 1

1

Ok。JQMsautoinitializeオプション (こちらを参照) を false にして解決しました。

$(document).bind("mobileinit", function(){
$.mobile.autoInitializePage = false;
});

この方法では、Jquery Mobile は自動的には起動しませんが、次のように手動で呼び出した場合にのみ起動します。

 if ( $.mobile.autoInitializePage == false){
    $.mobile.initializePage();
    }

JQM が最初のページの初期化をトリガーする前に、完全にセットアップする必要がある 2 番目のプラグインに最後のスニペットを配置しました。2 番目のプラグインが設定されたら、呼び出しinitializePage()て、すべて正常に実行されます。

于 2012-08-28T07:54:58.003 に答える