Конфликты Javascript

Если вы запускаете Joomla! или подобная CMS, где вы можете установить больше различных расширений, может случиться, что какая-то часть вашего сайта будет работать некорректно из-за конфликта Javascript. Что это значит?


Например в Joomla! (но, конечно, это может произойти в любой сложной системе), вы можете установить плагины, модули, компоненты и шаблоны. Такие части системы могут использовать разные библиотеки Javascript, которые могут конфликтовать друг с другом. Пример:

  • Компонент A загружает библиотеку Mootools (стандартная, встроенная в Joomla!)
  • Плагин B загружает собственную библиотеку Mootools, отличную от встроенной в Joomla!
  • Модуль C загружает библиотеку Jquery
  • Шаблон D загружает библиотеку Jquery, но отличается от версии, загруженной в модуль C.

Как видите, может возникнуть множество конфликтов Javascript, причем не только между одними и теми же библиотеками с разными версиями, но и между библиотеками Javascript, созданными разными разработчиками (наиболее известный пример - конфликт Jquery vs. Mootools). И, конечно, это еще не все, что может вызвать проблемы. Некоторые браузеры (в основном нестандартные) могут вызывать конфликты из-за нестандартной обработки Javascript. :-(

Поэтому, если какая-то часть вашего сайта не работает должным образом, это может быть вызвано конфликтом Javascript. Например: вы запускаете галерею с всплывающим окном, нажимаете на изображение, и вместо всплывающего окна будет загружена новая страница и т. Д.


Если проблема вызвана конфликтом библиотек Javascript, вам нужно взглянуть на консоль Javascript. Есть больше способов, как это сделать. Например, в Firefox вы можете использовать Firebug, панель инструментов веб-разработчика, отладчик, консоль ошибок и т. Д. См. Снимки экрана:

Отображается ошибка Javascript в Firebug:

Отображается ошибка Javascript в отладчике:

Отображается ошибка JavaScript в консоли ошибок:

Некоторые из этих методов являются частью браузера или могут быть загружены как дополнение для Firefox, Chrome и т. Д.

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

Вы должны переключиться на стандартный шаблон (только для проведения тестов) и отключить все добавленные плагины и модули. Запустите ваш сайт, и если вы не получите никаких ошибок JavaScript и ваш сайт будет отображаться правильно, продолжайте шаг за шагом с публикацией модулей и плагинов. Публикуйте их по одному и обновляйте страницу после каждой публикации. Таким образом, вы можете узнать, какие части (в основном библиотеки JavaScript) находятся в конфликте. Это может помочь вам найти решение, потому что вы можете запросить решение на форуме разработчика такой части. Конечно, будет не так просто, если конфликтуют два расширения от разных разработчиков. Но это первый шаг к решению проблемы.

Конфликты или ошибки Javascript - это не единственная ошибка, которая может возникнуть на веб-сайте, в основном это ошибки PHP или SQL. Такие ошибки могут быть обнаружены путем включения отчетов об ошибках php или режима отладки в Joomla! - см. эту статью: Самые частые ошибки для дополнительной информации.

Что это значит?