Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   MooTools и jQuery (https://javascript.ru/forum/misc/79069-mootools-i-jquery.html)

TRIGUN 13.12.2019 01:30

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, и их нельзя отключать.
Есть ли варианты как исправить ошибку и всё подружить?

Ссылка на файлы виджета и инструкция по установке тут.
Страница сайта с проблемой тут.

рони 13.12.2019 02:06

TRIGUN,
порядок загрузки
1.jQuery один раз на страницу.
2.плагины jQuery
3. грузить MooTools и скрипты на основе MooTools после всех остальных скриптов.

TRIGUN 13.12.2019 02:22

Цитата:

Сообщение от рони (Сообщение 517401)
TRIGUN,
порядок загрузки
1.jQuery один раз на страницу.
2.плагины jQuery
3. грузить MooTools и скрипты на основе 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>

рони 13.12.2019 03:39

TRIGUN,
виджет грузит jQuery наступает конфликт.

TRIGUN 13.12.2019 03:47

Цитата:

Сообщение от рони (Сообщение 517403)
TRIGUN,
виджет грузит jQuery наступает конфликт.

Значит, нет варианта как все подружить?

рони 13.12.2019 03:53

TRIGUN,
написать авторам виджета.
или отредактировать виджет самостоятельно,
или загрузить mootools с задержкой.

TRIGUN 13.12.2019 03:54

Цитата:

Сообщение от рони (Сообщение 517405)
TRIGUN,
написать авторам виджета.
или отредактировать виджет самостоятельно,
или загрузить mootools с задержкой.

Авторы точно не хотят помогать.
Можете тогда подсказать, куда копать во втором и третьем варианте?

рони 13.12.2019 04:03

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>

Vlasenko Fedor 14.12.2019 01:50

рони,
Он так не сможет, это Joomla
Ошибка вообще-то другая
ReferenceError: jQuery is not defined k2.js:9:11
Включите загрузку jQuery в настройках K2

рони 14.12.2019 02:11

Цитата:

Сообщение от Poznakomlus
Включите загрузку jQuery в настройках K2

если б я ещё знал, что это значит. :)

TRIGUN 14.12.2019 21:31

Цитата:

Сообщение от Poznakomlus (Сообщение 517464)
рони,
Он так не сможет, это Joomla
Ошибка вообще-то другая
ReferenceError: jQuery is not defined k2.js:9:11
Включите загрузку jQuery в настройках K2

Это не имеет никакого эффекта, что включение, что выключение, что смена версии. Отложенная загрузка mootools тоже не помогла, но рони спасибо за отзывчивость.
Вот это обычная страничка, там ничего лишнего.

рони 15.12.2019 01:30

TRIGUN,
может в документации на виджет есть параметр отключения загрузки jQuery? тогда.
тогда 1 загружаем jQuery.
2. загружаем виджет.
3. грузим MooTools.
в целом нужно редактировать виджет, не могу помочь.

Vlasenko Fedor 16.12.2019 02:10

рони,
MooTools вшит в фреймворк
К2 это компонент блога, который на главной ругается на отсутствие jQuery из-за неправильной очередности
автор топика спокойно может подключить jQuery как написано здесь
https://gist.github.com/phproberto/7473480
при этом надо во всех расширениях проверить, чтобы подключалось подобным методом
вы можете полностью убить отключить mootools моим плагином
https://github.com/vlasenkofedor/joomla_options
не совсем хорошая идея так как продливать сесию будете сами
как изменить порядок загрузки скриптов, подход я приводил здесь

рони 16.12.2019 02:41

Poznakomlus,
проблема не в MooTools, а в том что виджет грузит jQuery, и грузит асинхронно, поэтому как бы до этого что не грузилось, сколько бы jQuery не загружалось, jQuery из виджета загрузится ещё раз и встанет после MooTools, чем вызовет конфликт.

Vlasenko Fedor 16.12.2019 02:48

рони,
тогда удалить загрузку(подключение) jQuery из виджета
и грузить один раз в шаблоне
вообще прикольно когда разработчик переименовал jQuery в ipjq.js
круто

рони 16.12.2019 08:37

Цитата:

Сообщение от Poznakomlus
тогда удалить загрузку(подключение) jQuery из виджета

Цитата:

Сообщение от рони
в целом нужно редактировать виджет, не могу помочь.

:-/


Часовой пояс GMT +3, время: 18:26.