Невозможно использовать jQuery
Хорошо, я пытаюсь сделать очень простую вещь: используйте jQuery в моем файле myScript.js
. Я нахожусь на Magento 1.9.0.1. Тема, которую я создаю, основана на встроенной теме rwd
, которая по умолчанию загружает jQuery 1.10.2 в режиме noConflict локально (в отличие от Google cdn). Если я попытаюсь выполнить функцию jQuery в myScript.js
, я получу следующую ошибку (в моей консоли разработчика Chrome): Ошибка ссылки: jQuery не определен . Однако, если я помещу ту же функцию внутрь <script>
где-то в HTML это работает так, как ожидалось.
Итак, я провел некоторое исследование и покопался, и, похоже, проблема связана с порядком загрузки файлов .js
в заголовке страницы, где myScript.js
загружается до jquery-1.10.2.min.js
. Я перепробовал много разных способов исправить это (пытаясь вызвать myScript.js
после jQuery) - я переместил строку в page.xml
, которая вызывает jQuery, до вызова myScript.js
. Я переместил вызов myScript
в local.xml , где я положил его в самом низу. Нет что бы я ни делал, я не могу заставить myScript.js
загружаться после jquery-1.10.2.min.js
. Порядок загрузки в <head>
всегда, всегда будет одним и тем же, независимо от того, в каком порядке я их перечисляю. Я могу заставить любой файл вообще не загружаться, удалив его вызов из page.xml
, поэтому я знаю, что редактирую правильный файл.
TL;DR: Как я могу заставить myScript.js
загрузить после jQuery?
Заранее спасибо!
P.S. Правильно ли я использую backtick markdown
в своем вопросе? Такое чувство, что я действительно им пользуюсь часто, но я верю, что следую рекомендациям. Любая стилистическая помощь будет признательна:)
1 answers
Ответ
Чтобы заставить его загружаться после jQuery в head
, не используйте addJs
, а используйте <action method="addItem"><type>skin_js</type>
, так как скин загружается после библиотек (addJs
)
В качестве примечания
Мой предпочтительный метод написания сценариев пользовательского jQuery заключается в добавлении шаблонов в
before_body_end
; для этого нет действияaddJs
, поэтому вместо этого вы создадите файл шаблона, который включает тег сценария сgetSkinUrl
. Это гарантирует, что ваш скрипт не блокируется. В Magento это может показаться смешным (из-за огромного количества сценариев вhead
), но лучше придерживаться наилучшей практики, когда речь идет о ваших настройках.Вместо того, чтобы использовать
jQuery
, платформа RWD использует noConflict для псевдонима, чтобы$j
:
Файл: skin/frontend/rwd/default/js/app.js
// ==============================================
// jQuery Init
// ==============================================
// Avoid PrototypeJS conflicts, assign jQuery to $j instead of $
var $j = jQuery.noConflict();