我正在尝试使用LABjs来改善网页的加载时间。但是我在jQuery.cookie('mycookie')中得到了'Undefined not a function',我在我自己的jQuery脚本中使用它。
我很感激有关如何实现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文件
这里我按顺序加载脚本。 ratings.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");
ratings.js
ratings.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
});
我在ratings.js中收到与包含jQuery.cookie('mycookie')的代码行有关的错误。它说“未捕获类型错误:未定义不是函数”
据我所知,当我尝试将它传递给.wait()时,jQuery.cookie()尚未定义。什么是让它工作的最佳方法,记住我想将ratings.js保存在一个单独的js文件中,因为它包含大量代码,并且是许多类似的js文件之一,当它们也会抛出相同的错误时我用LABjs加载它们。
非常感谢!
凯蒂
答案 0 :(得分: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");
(请注意,您的代码中有一个分号,可能会破坏某些内容):