Инфо Решение конфликтов jQuery и Mootools, и разных версий jQuery

Статус
В этой теме нельзя размещать новые ответы.

puagardian

One Love
Регистрация
16 Июл 2012
Сообщения
436
Реакции
615
Сегодня столкнулся с проблемой когда на одном из разрабатываемых сайтов на Joomla перестали работать слайдеры изображений на Widgetkit, слайлер фото RS-Flashion и скрипт который я подключил к сайту для вывода картинок когда наводишь мышкой на определенную позицию в прайсе. Недолго думая понял что происходит данный глюк из-за конфликтов разных версий jQuery. По этой теме немало в интернете есть информации, но внедрение скриптов аля "ноу конфликт" не решало проблемы, а только усугубляло (без него что-то одно работало, с ним - ничего).
РЕШЕНИЕ: Плагин EasyjQuery, подойдет для Joomla 1.5, 2.5. В нем можно выставить какую версию jQuery на какой странице подключать, подключать из собственной папки, брать от google или самому указывать путь, использовать режимы "ноу конфликт" и еще много чего. Подойдет для устранения конфликтов как разных версий jQuery так и конфликтов jQuery и MooTools.
 
Конфликт jQuery и MooTools устраняется легко через noConflict, просто иногда он криво работает - нужно правильно заменить все $ на jQuery и вывести подключение jQuery и MooTools в правильном порядке, иначе то один скрипт не работает то другой. Иногда даже стоит перенести два скрипта в один фал
 
я в свое время на двух сайтах заменил $ на $$ - все работает и никаких конфликтов нет. Но что интересно, noConflict не помогло
 
Конфликт jQuery и MooTools устраняется легко через noConflict, просто иногда он криво работает - нужно правильно заменить все $ на jQuery и вывести подключение jQuery и MooTools в правильном порядке, иначе то один скрипт не работает то другой. Иногда даже стоит перенести два скрипта в один фал
Вот все это хорошо и охотно верится что работает это все (хотя про noConflict я уже писал) работает но ИМХО сложно это все по сравнению с установкой и настройкой нужного плагина, да и не описано доходчиво (искал поверхносно). Прикрепляю данный плагин к сообщению, новую версию можно скачать здесь: Для просмотра ссылки Войди или Зарегистрируйся
Плагин бесплатный, но для скачивания требуется регистрация на их сайте.
 

Вложения

  • plg_jqueryeasy.zip
    184,6 KB · Просмотры: 79
Согласен с Sergo_Sev, теоретически все должно работать через noConflict (когда в скриптах указано не $ а jQuery). У себя на одном сайте я так и сделал, но потом понял что это дополнительная нагрузка на пользователя, поэтому переделал некоторые компоненты с MooTools на jQuery. Что и вам советую.

P.S Joomla для себя уже поставила приоритетом библиотеку jQuery из-за более динамичного роста и большего сообщества. В Joomla 3.0 в ядре будут идти и MooTools и jQuery (noConflict). А в последующих версиях останется только jQuery.
 
Конфликт коровы и jquery устраняется методом устранения одной из этих библиотек. Довольно безграмотно использовать их обе на одном ресурсе, так как то, что можно реализовать на му, реализуемо и на jquery. Можно конечно использовать noConflict, как писалось выше. Но лучше вообще удалить мутулз. Правда есть сложности. Два способа отключения: а) ставим Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся - лично я использую первый.; б) Открываем index.php шаблон
Код:
$document = JFactory::getDocument();
unset($this->_scripts[$this->baseurl.'/media/system/js/mootools-core.js'],
    $this->_scripts[$this->baseurl.'/media/system/js/mootools-more.js'],
    $this->_scripts[$this->baseurl.'/media/system/js/core.js'],
    $this->_scripts[$this->baseurl.'/media/system/js/caption.js']);
$document->addScript('[URL][URL][URL][URL]https://ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools-yui-compressed.js[/URL][/URL][/URL][/URL]'); // подключаем JQuery
  // Вычищаеи остатки кода инициализации caption.js:
        if( isset($this->_script['text/javascript']) ) {
            $this->_script['text/javascript'] = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script['text/javascript']);
            if( empty($this->_script['text/javascript']) )
            unset( $this->_script['text/javascript'] ); }

Но и это еще не все. Нужно вычистить хвосты behavior из шаблонов вывода компонентов и модулей. Бывает без конфликтов и не вычищая, но случается, что все становится колом, например, после включения модуля авторизации. Качаем приложенный архив, заменяем им содержимое папки html шаблона. На всякий случай сделайте дамп своей папки html, так как шаблоны расширений в приложенном архиве на уровне верстки не изменены, тогда как в Вашем шаблоне может быть иначе, разработчик переверстал отдельные модули или тот же com_content под структуру отдельно взятого шаблона. Архив предназначен для J2.5 версии.
 

Вложения

  • html.zip
    95,3 KB · Просмотры: 21
я в свое время на двух сайтах заменил $ на $$ - все работает и никаких конфликтов нет. Но что интересно, noConflict не помогло
А так не пробовали?



var j = jQuery.noConflict();
j(document).ready(function() {
jQuery('выбираемый тег').действие();
jQuery('выбираемый тег').действие();
и т.д.
});
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху