Как найти конфликт JavaScript в Joomla?

Полезное для Joomla


Хотя JavaScript красив и очень удобен, он также может сбивать сайт, если несколько библиотек конфликтуют друг с другом. Можно ожидать, что конфликты JavaScript появятся, поскольку все больше и больше расширений использующих JavaScript устанавливаются на сайтах Joomla. В расширениях могут использоваться разные библиотеки JavaScript или разные версии библиотеки или библиотеки, созданные разными разработчиками, которые могут находиться в конфликте друг с другом.

Что вызывает конфликты JavaScript?
Различные версии библиотеки Mootools и библиотеки jQuery могут создавать множество конфликтов JavaScript. Событие, когда вы используете те же версии библиотек, но библиотеки, созданные разными разработчиками (например, конфликты jQuery и Mootools), также может вызвать конфликт JavaScript.

Конфликт JavaScript в Joomla

Вот пример:

Шаблон A загружает библиотеку Mootools версии 1.5.0
Плагин B загружает собственную библиотеку Mootools версии 1.2.6
Модуль C загружает библиотеку jQuery версии 1.11
Компонент D загружает библиотеку jQuery версии 2.1.1

Как определить конфликты JavaScript?
Поэтому, когда ваш сайт работает не так, как следует, нужно исключать конфликты. Но как проверить и найти конфликт JavaScript? Существует несколько способов сделать это на основе браузеров. Например, в Firefox и Chrome доступными инструментами являются Firebug, Web Developer toolbar, Debugger, Error Console и т.д.

Если на вашем сайте есть ошибка JavaScript, инструменты предоставят вам сообщения об ошибках, которые помогут вам разобраться в проблеме (сообщение об ошибке также дает вам имена файлов в конфликтах.)

Обнаружение конфликта JavaScript в Joomla с использованием firebug на Firfox

Обнаружение конфликта JavaScript в Joomla с использованием firebug на Firfox

Вы можете обнаружить проблему, проверив, какие расширения вызывают проблему, вот шаги:

Переключитесь на шаблон Joomla по умолчанию и отключите установленные расширения, затем перезагрузите свой сайт и проверьте, существует ли ошибка JavaScript или нет.
Опубликуйте свои установленные расширения один за другим и перезагрузите свой сайт. Повторяйте процесс, пока не увидите, какие части находятся в конфликте.

Как разрешить конфликты JavaScript?
Нет универсального шага для разрешения конфликта JavaScript, поскольку он варьируется от случая к случаю и лучше всего разрешен разработчиками. Но вот несколько вещей, которые вы можете попробовать:

1. Поместите jQuerry в режим без конфликтов
Библиотека jQuery и все ее плагины содержатся в пространстве имен jQuery. Глобальные объекты хранятся внутри пространства имен jQuery, поэтому вы не должны сталкивать между собой jQuery и любую другую библиотеку, например prototype.js, MooTools.

Помещение jQuery в режим без конфликтов сразу после его загрузки на страницу и прежде, чем вы попытаетесь использовать jQuery на странице.

<!-- Another way to put jQuery into no-conflict mode. -->
<script src="/prototype.js"></script>
<script src="/jquery.js"></script>
<script>
 
jQuery.noConflict();
 
jQuery( document ).ready(function( $ ) {
    // You can use the locally-scoped $ in here as an alias to jQuery.
    $( "div" ).hide();
});
 
// The $ variable in the global scope has the prototype.js meaning.
window.onload = function(){
    var mainDiv = $( "main" );
}
 
</script>

2. Попросите помощи у продюсера
Если вы не можете самостоятельно решить конфликт JavaScript, вы можете поискать решения в Интернете, спрашивать на форумах, например, stackoverflow.com или запрашивать поддержку поставщика расширения для решения.

3. У моего сайта разные проблемы?
Конфликт JavaScript — всего лишь один тип ошибки, ошибки также могут быть получены от PHP, SQL и т.д. Вы можете обнаружить эти ошибки с помощью отчетов об ошибках Joomla