我正在使用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不高兴。
感谢您的任何帮助!
最佳答案
尝试这个:
<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>
其他注意事项:
删除最终的empty / noop .wait()函数,该函数不再需要了。
LABjs不应加载modernizr ...您应按照IIRC所说的文档加载该文档,该文档应在文档顶部的普通
<script>
标记中。我的猜测是此链中的某些
.wait()
是不必要的。例如,我猜想在“ jquery-slider”和“ jquery-watermark” script()
调用之后就不需要它们了,因为我敢打赌它们彼此不依赖,因此可以相对于彼此以任何ASAP顺序运行其他,只要他们确保在jQuery完成后就可以运行(这就是为什么我在代码段中添加了.wait()
调用中的注释!)