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, время: 05:11. |