2

我正在使用 LABjs 来实现一些并行的 js 加载优势。

但是,出于某种奇怪的原因,我在调试控制台中收到“$ 未定义”的错误。

我的代码如下:

<script>
$LAB.script("http://use.typekit.com/blah.js").script("/assets/js/libs/jquery-1.5.1.min.js").script("/assets/js/libs/basic-jquery-slider.min.js").wait().script("/assets/js/libs/modernizr-1.7.min.js").script("/assets/js/libs/jquery.watermarkinput.js").wait().script("/assets/js/libs/jquery-ui-1.8.14.custom.min.js").wait().script("/assets/js/effects.js").wait(function(){});

在我的 effects.js 中有。

try{Typekit.load();}catch(e){}
$('#banner').bjqs({
'width' : 980,
'height' : 212,
'showMarkers' : false,
'showControls' : false,
'centerMarkers' : false
});

一切正常,但我收到上述错误。我不明白为什么,jquery 对象应该在那里(并且必须在一切正常的情况下)那么为什么会出现错误?

有任何想法吗?我确定我正确使用了 labjs,但我认为这个错误让 IE7 感到不安 :(

我可能应该在后面的代码中添加一个 $(document).ready ?但这似乎让labjs感到不安。

提前感谢您的帮助!

4

2 回答 2

0

试试这个:

<script>
$LAB
.script("http://use.typekit.com/blah.js")
.script("/assets/js/libs/jquery-1.5.1.min.js").wait() // <---- ADD THIS .wait()
.script("/assets/js/libs/basic-jquery-slider.min.js").wait()
.script("/assets/js/libs/modernizr-1.7.min.js")
.script("/assets/js/libs/jquery.watermarkinput.js").wait()
.script("/assets/js/libs/jquery-ui-1.8.14.custom.min.js").wait()
.script("/assets/js/effects.js").wait(function(){});
</script>

其他一些注意事项:

  1. 删除最后的 empty/noop .wait() 函数,不再需要它。
  2. LABjs不应该加载modernizr ...您应该根据IIRC所说的文档加载它,它应该位于<script>文档顶部的普通标签中。
  3. 我的猜测是.wait()你在这个链中的一些 ' 是不必要的。例如,我的猜测是在“jquery-slider”和“jquery-watermark”script()调用之后不需要它们,因为我敢打赌它们不相互依赖,因此可以以任何 ASAP 顺序运行,因为只要他们确保在 jQuery 完成后运行(这就是我在片段中添加注释以添加.wait()调用的原因!
于 2012-05-27T19:19:57.250 回答
0

我刚刚意识到隐藏在页脚的包含中是对我的 effects.js 文件的另一个调用。但这是在普通的脚本标签中。这可以解释为什么它在运行时出现错误,然后在被调用两次时工作,一次在 labjs 内,一次不在。真是个白痴:(感谢大家的尝试!对不起!

于 2012-05-29T07:53:26.967 回答