Используя Labjs, я получаю сообщение об ошибке "$ is notfined", но js все еще работает, не знаю почему:(
Я использую LABjs для некоторых параллельных JS загрузки совершенства.
Но, по какой-то странной причине, я получаю сообщение об ошибке в консоли отладки "$ is notfined".
Мой код выглядит следующим образом:
<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(){});
И в моих эффектах. JS у меня есть.
try{Typekit.load();}catch(e){}
$('#banner').bjqs({
'width' : 980,
'height' : 212,
'showMarkers' : false,
'showControls' : false,
'centerMarkers' : false
});
Все работает, но я получаю вышеупомянутую ошибку. Я не понимаю, почему, объект jquery должен быть (и должен быть, как все работает), так почему ошибка?
Есть идеи? Я уверен, что я использую labjs правильно, но я думаю, что эта ошибка расстраивает IE7:(
Я, вероятно, должен был бы добавить $(document). Уже вокруг последнего кода? но это, кажется, расстраивает labjs.
Спасибо за любую помощь заранее!
2 ответа
Я только что понял, что скрытый во включении в нижний колонтитул - это еще один вызов моего файла effect.js. Но это в обычных тегах сценария. Это объясняет, почему он работает с ошибкой, а затем работает так, как его вызывают дважды, один раз внутри 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>
Некоторые другие заметки:
- Удалите эту последнюю пустую функцию /noop .wait(), она больше не нужна.
- Modernizr не должен быть загружен LABjs... вы должны загрузить это в соответствии с документами, которые IIRC говорит, что он должен быть в нормальном
<script>
тег в верхней части вашего документа. - Я думаю, что некоторые из
.wait()
Тут у вас в этой цепочке нет необходимости. Например, я думаю, что они не нужны после "jquery-slider" и "jquery-watermark"script()
вызовы, так как я держу пари, что они не зависят друг от друга и, следовательно, могут выполняться в любом порядке ASAP по отношению друг к другу, если только они завершили выполнение после завершения jQuery (вот почему я сделал комментарий во фрагменте к добавить в.wait()
вызов!)