0

LABjs を使用して Web ページの読み込み時間を改善しようとしています。ただし、自分の jQuery スクリプトで使用している jQuery.cookie('mycookie') に関連して、「Undefined not a function」を取得しています。

ドキュメントをよく理解していないので、これに対処するために LABjs を実装する方法についてアドバイスをいただければ幸いです。

これまでのコードは次のとおりです。

HTML

HTML ページのフッターに jQuery と LAB.min.js があります

<script type="text/javascript" src="myfolder/jquery1.9.1.js"></script>
<script type="text/javascript" src="myfolder/LAB.min.js"></script>

LAB.min.js ファイル

ここでは、スクリプトを順番にロードします。rating.js は jquery-cookie.js に依存するため、jquery-cookie.js が最初に読み込まれるように最初に wait() を含めました。

//ALL THE LABjs code is here, but not included on this post!

$LAB.setGlobalDefaults({Debug:true});
.script("myfolder/bootstrap.min.js")
.script("myfolder/jquery-cookie.js") 
.wait() 
.script("myfolder/ratings.js");

rating.js

rating.js は、jQuery(document).ready 関数に含まれる長いコードです。

jQuery(document).ready(function() {
 //LOTS OF CODE HERE
    if(jQuery.cookie('mycookie')==null){    
        //LOTS OF CODE HERE
    }   
//LOTS OF CODE HERE
});

jQuery.cookie('mycookie') を含むコード行に関連して、ratings.js でエラーが発生します。「キャッチされていない型エラー: 未定義は関数ではありません」と表示されます

私が理解していることから、.wait() に渡そうとすると、jQuery.cookie() はまだ定義されていません。これを機能させるための最良の方法は何ですか。rating.js を別の js ファイルに保持したいのは、多くのコードが含まれており、同じエラーをスローする多くの同様の js ファイルの 1 つであるためです。それらをLABjsでロードします。

どうもありがとう!

ケイティ

4

1 に答える 1

1

HTML 内の jQuery へのリンクを削除し、LABJS だけですべてのスクリプトをロードできるはずです。これにより、Bootstrap またはプラグインの前に jQuery が読み込まれます。

$LAB
  .setGlobalDefaults({Debug:true}) // removed semi-colon
  .script("myfolder/jquery1.9.1.js")
  .wait()
  .script("myfolder/bootstrap.min.js")
  .script("myfolder/jquery-cookie.js") 
  .wait() 
  .script("myfolder/ratings.js");

(コードにセミコロンが含まれていることに注意してください。これは、何かを壊している可能性もあります):

于 2014-05-27T09:10:49.850 に答える