MooTools и jQuery
Решил установить на сайт (joomla 2.5) скрипт карты от CDEK.
В итоге в консоли ошибка: Uncaught TypeError: #<Object> is not a function at Array.forEach (<anonymous>) at Function.forEach (mootools-core.js:33) at Array.each (mootools-core.js:40) at Object.trigger (widjet.js:290) at Object.trigger (widjet.js:35) at Object.onCalc [as success] (widjet.js:1029) at i (ipjq.js:2) at Object.fireWith [as resolveWith] (ipjq.js:2) at A (ipjq.js:4) at XMLHttpRequest.<anonymous> (ipjq.js:4) widjet.js и ipjq.js - файлы виджета, соответственно. Многие элементы работают на MooTools 1.4.5, и их нельзя отключать. Есть ли варианты как исправить ошибку и всё подружить? Ссылка на файлы виджета и инструкция по установке тут. Страница сайта с проблемой тут. |
TRIGUN,
порядок загрузки 1.jQuery один раз на страницу. 2.плагины jQuery 3. грузить MooTools и скрипты на основе MooTools после всех остальных скриптов. |
Цитата:
Если mootools подключен на странице, то виджет карты не работает. ВОТ, например. Там обычная html-страница и на ней только виджет карты + mootools в самом конце. И все тоже самое, как и на сайте. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Виджет SDEK</title> <script id="ISDEKscript" type="text/javascript" src="widjet.js"></script> <script type="text/javascript"> var ourWidjet = new ISDEKWidjet ({ defaultCity: 'Новосибирск', cityFrom: 'Новосибирск', country: 'Россия', link: 'forpvz', path: 'scripts/', servicepath: 'scripts/service.php', apikey: '*******************' }); </script> <script src="mootools-core.js" type="text/javascript"></script> <script src="mootools-more.js" type="text/javascript"></script> </head> <body> <div id="forpvz" style="width:100%; height:600px;"></div> </body> </html> |
TRIGUN,
виджет грузит jQuery наступает конфликт. |
Цитата:
|
TRIGUN,
написать авторам виджета. или отредактировать виджет самостоятельно, или загрузить mootools с задержкой. |
Цитата:
Можете тогда подсказать, куда копать во втором и третьем варианте? |
TRIGUN,
вдруг поможет :) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Виджет SDEK</title> <script id="ISDEKscript" type="text/javascript" src="widjet.js"></script> <script> var ourWidjet = new ISDEKWidjet ({ defaultCity: 'Новосибирск', cityFrom: 'Новосибирск', country: 'Россия', link: 'forpvz', path: 'scripts/', servicepath: 'scripts/service.php', apikey: '.......' }); </script> </head> <body> <div id="forpvz" style="width:100%; height:600px;"></div> <script> window.setTimeout(function() { document.body.insertAdjacentHTML('beforeEnd', `<script src="https://cdnjs.cloudflare.com/ajax/libs/mootools/1.6.0/mootools-core.min.js" type="text/javascript"><\/script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mootools-more/1.6.0/mootools-more-compressed.js" type="text/javascript"><\/script>`) }, 2000) </script> </body> </html> |
рони,
Он так не сможет, это Joomla Ошибка вообще-то другая ReferenceError: jQuery is not defined k2.js:9:11 Включите загрузку jQuery в настройках K2 |
Цитата:
|
Цитата:
Вот это обычная страничка, там ничего лишнего. |
TRIGUN,
может в документации на виджет есть параметр отключения загрузки jQuery? тогда. тогда 1 загружаем jQuery. 2. загружаем виджет. 3. грузим MooTools. в целом нужно редактировать виджет, не могу помочь. |
рони,
MooTools вшит в фреймворк К2 это компонент блога, который на главной ругается на отсутствие jQuery из-за неправильной очередности автор топика спокойно может подключить jQuery как написано здесь https://gist.github.com/phproberto/7473480 при этом надо во всех расширениях проверить, чтобы подключалось подобным методом вы можете полностью https://github.com/vlasenkofedor/joomla_options не совсем хорошая идея так как продливать сесию будете сами как изменить порядок загрузки скриптов, подход я приводил здесь |
Poznakomlus,
проблема не в MooTools, а в том что виджет грузит jQuery, и грузит асинхронно, поэтому как бы до этого что не грузилось, сколько бы jQuery не загружалось, jQuery из виджета загрузится ещё раз и встанет после MooTools, чем вызовет конфликт. |
рони,
тогда удалить загрузку(подключение) jQuery из виджета и грузить один раз в шаблоне вообще прикольно когда разработчик переименовал jQuery в ipjq.js круто |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 18:26. |