4

私は yepnope.js を使用していますが、ロード時に関数をロードする際にわずかな問題があります

頭の中で、はい、いいえを含めて、関連するjsファイルを呼び出します

<script type="text/javascript" src="/code/trunk/javascript/external/modernizr/modernizr-development.js"></script>

<script type="text/javascript" src="/code/trunk/javascript/external/yepnope.1.5.3-min.js"></script>

<script type="text/javascript">
yepnope({
  test: Modernizr.mq('only all and (max-width: 700px)'),
  yep: ['/templates/client/jquery/qff/plugin.mobile.js'],
  nope:['/templates/client/jquery/qff/plugin.website.js']
});    
</script>

そして、ページの一番下に

<script type="text/javascript">
jQuery(document).ready(function() 
{
    jQuery("#mainContent").setupQantas({
        startSlide: 1, 
        googleAnalytics:1,
        googleCode:""
    });
});
</script>

だから私はメイン画面でこれを見ています。そのため、plugin.mobile.js を呼び出すことがサポートされています

plugin.mobile.js ファイルで

(function( $ ){

  $.fn.setupQantas = function( options ) {  

    // Create some defaults, extending them with any options that were provided
    var settings = $.extend( {
        startSlide: 1, 
        googleAnalytics:0, // 1 sends to google
        googleCode: ""
    }, options);

    var methods = {};

    return this.each(function() {        

        if (settings.startSlide === 1) {
            alert("slide = 1");     
        } else {
            alert("slide > 1");
        }
    });
  };
})( jQuery );// JavaScript Document 

警告スライド 1 を表示する代わりに、エラーが表示されます

jQuery("#mainContent").setupQantas is not a function

yepnope を使用せず、script タグに入れるだけで機能します。yepnope が js ファイルに読み込まれるときに遅延があるようで、doc.ready の前に行わないようです。

これを回避する方法はありますか?

ありがとう

4

2 に答える 2

3

はい、遅延があります。非同期スクリプト ローダーの背後にあるポイントはこれだけです。

スクリプトが yepnope によってロードされた後、コールバックを使用する必要があります。completeおよびオプションを確認しcallbackます。

于 2013-03-01T04:39:46.823 に答える
0

ここにコードがあります

<script type="text/javascript">

yepnope({
  test: Modernizr.mq('only all and (max-width: 700px)'),
  yep: ['/templates/client/jquery/qff/mobile.js'],
  nope:['/templates/client/jquery/qff/website.js'],
  complete: function () {
    jQuery("#mainContent").setupQantas({
        startSlide: 1, 
        googleAnalytics:1,
        googleCode:""
    });
  }
});


</script>
于 2013-03-01T04:56:15.697 に答える