0

我正在尝试使用 LABjs 改善网页的加载时间。但是,与我在自己的 jQuery 脚本中使用的 jQuery.cookie('mycookie') 相关,我得到了“未定义不是函数”。

我将不胜感激有关如何实施 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,所以我首先包含了一个 wait() 以确保首先加载 jquery-cookie.js。

//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");

评分.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
});

我在 rating.js 中收到与包含 jQuery.cookie('mycookie') 的代码行相关的错误。它说“未捕获的类型错误:未定义不是函数”

据我了解,当我尝试将 jQuery.cookie() 传递给 .wait() 时,尚未定义它。什么是让它工作的最佳方法,请记住,我想将 rating.js 保存在一个单独的 js 文件中,因为它包含大量代码,并且是许多类似的 js 文件之一,当我用 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 回答