AMD Подгрузка скриптов (RequireJS)
Здравствуйте.
Делаю по инструкции, вроде. При подключении скрипта из: <script type="text/javascript" data-main="?ajax=java&with=doc&type=b" src="js/require.js"/> Этот скрипт подключается и выполняется. А когда я подключаю новый скрипт из скрипта ajax подгрузки командой: require([data.script]); Он добавляет его в хедер, но не исполняет.. От сюда два вопроса: - что и куда добавить, чтоб он не кэшировал скрипты в хедере страницы. - как заставить выполнятся скрипт? Может конструкция jQuery(document).ready(function(){}); не нужна в подключаемых скриптах? |
Цитата:
|
danik.js,
На всякий случай. Но кстати попробовал, не работает. Подгрузка контента идет так же по ajax, может скрипт загружается раньше чем контент добавляется на страницу? Такое возможно? |
Видимо может...
Частично решил проблему. |
Почему не кэшировать скрипты? Они разве не статичные? Каждый раз содержимое разное?
|
danik.js,
Для каждой страницы разные. Просто чтоб он их исполнял, думал стоит их не кэшировать. Но блин, чет странное происходит, колорбокс и тултип не хотят вешать свои события теперь на блоки. Может какое то событие подскажите, чтоб после загрузки элемента на страницу можно было обработчик повесить. По клику незя, ибо только со второго раза срабатывает тогда. А если при наведении, то нужно как то повесить только один раз... |
Если содержимое не меняется, то не нужно запрещать кэширование. Не у всех безлимитный интернет еще. Подгружаемые скрипты не должны содержать чета типа $(document).ready(..)! Они должны просто объявлять какие-то глобальные переменные (хотя это не совсем правильно с точки зрения requirejs). А навешивать события и тд нужно отдельным кодом в момент когда и скрипт загружен, и контент уже подгружен.
И повесить обработчик, который после исполнения удалится - тоже не проблема. Есть же el.removeEventListener('event', handler), а в jquery для этого даже отдельный метод есть - |
danik.js,
Так библиотеки все загружены при первой загрузке. А подгружаю только слушателей. Которые через раз почему то срабатывают. Сейчас делаю по такому алгоритму: - Получает ответ с сервера - Прячем старый контент - Как только он ушел с экрана, меняем содержимое и начинаем анимацию отображения - Только в этот момент идет загрузка слушателей Просто не все слушатели могу через live навесить. А может все таки стоит все слушатели через него повесить? |
Если ты обработчики в отдельных файлах навешиваешь, то ты должен сделать возможным делать это когда тебе нужно. Объявляешь функцию типа addEventHandlers и вызываешь ее когда нужно. Честно говоря с requirejs толком то и не знаком, наверняка там есть специальные для этого средства. И наверное чтобы небыло утечек, нужно еще объявлять removeEventListeners и вызывать эту функцию перед удалением контента.
|
danik.js,
Всех слушателей с контента я удаляю в момент ухода из виду. В любом случае, тогда всех слушателей загружать нужно сразу и вешать их опять таки по какому то алгоритму... Думал все это заменить на получение сразу подготовленных выражений со всеми слушателями. В общем будем думать, как это сделать безболезненно для сайта и пользователя. |
Часовой пояс GMT +3, время: 13:19. |