Хотя 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, инструменты предоставят вам сообщения об ошибках, которые помогут вам разобраться в проблеме (сообщение об ошибке также дает вам имена файлов в конфликтах.)
Вы можете обнаружить проблему, проверив, какие расширения вызывают проблему, вот шаги:
Переключитесь на шаблон 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