0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 280 Просмотров
*

CriZtmb

  • Новичок
  • 15
  • 1 / 0
TypeError: $ is not a function [Решено]
« : 20.05.2019, 21:35:55 »
Народ, привет! В общем вот такой вопрос. Нужно мне на одном сайте разместить скрипт. Не так давно понадобилось то же самое и здесь подсказали как быть. В общем решил я и в этот раз скрипт тем же способом подключить. Т.е. сперва создал модуль с этим кодом:
Код
<div data-id_form="1467"></div>
<script type="text/javascript">
var $ = jQuery ;
</script>
<script src="https://forma1.ru/js/uzform.min.js?komp=nok" defer></script>
Вывел его на нужной странице и вроде форма грузится, но не отправляется. На другом сайте с теми же манипуляциями все норм, а здесь при щелчке на кнопку отправить ошибка: TypeError: $ is not a function.
Вот пациент: https://tver-domprestarelyx.ru/uslugi-i-tseny/nezavisimaya-otsenka-kachestva-okazaniya-uslug.html
Там видно в консоли что конфликт в подключаемом скрипте. Можно это как то исправить по легкому или только в самом подключаемом скрипте что менять. Или может отключить какой скрипт на сайте?
« Последнее редактирование: 21.05.2019, 00:03:27 от CriZtmb »
*

Physicist

  • Глобальный модератор
  • 933
  • 187 / 0
  • Рябов Денис
Re: TypeError: $ is not a function
« Ответ #1 : 20.05.2019, 22:08:46 »
Если "модуль" - это именно полноценный модуль, а не Custom HTML, то достаточно добавить в него
Код
<?php JHtml::_('jquery.framework'); ?>
для загрузки jQuery средствами самой Joomla!
*

CriZtmb

  • Новичок
  • 15
  • 1 / 0
Re: TypeError: $ is not a function
« Ответ #2 : 20.05.2019, 22:47:18 »
Не, у меня как раз Custom HTML через расширения - модули -HTML-код.
*

videoruslan

  • Захожу иногда
  • 85
  • 2 / 0
Re: TypeError: $ is not a function
« Ответ #3 : 20.05.2019, 22:49:00 »
Оработка плагинами включена? В модуле
*

sivers

  • Давно я тут
  • 633
  • 63 / 0
Re: TypeError: $ is not a function
« Ответ #4 : 20.05.2019, 22:53:08 »
В общем решил я и в этот раз скрипт тем же способом подключить.
В тот раз решение было для конкретной страницы именно того сайта. А на этом сайте у вас мутулса нет - можно вообще noconflict не подключать. и проблемы с формой тогда не будет.
На связи в телеге @sivers
*

CriZtmb

  • Новичок
  • 15
  • 1 / 0
Re: TypeError: $ is not a function
« Ответ #5 : 20.05.2019, 23:00:33 »
Оработка плагинами включена? В модуле
И так и так пробовал. Не пашет
*

CriZtmb

  • Новичок
  • 15
  • 1 / 0
Re: TypeError: $ is not a function
« Ответ #6 : 20.05.2019, 23:02:34 »
В тот раз решение было для конкретной страницы именно того сайта. А на этом сайте у вас мутулса нет - можно вообще noconflict не подключать. и проблемы с формой тогда не будет.
noconflict я и не прописывал. Там уже стоял подключенный <script src="/media/jui/js/jquery-noconflict.js?475f8800d34d28bd947ddadf5396aa7a" type="text/javascript"></script> в head, также как и на другом сайте где подобная конструкция работает
« Последнее редактирование: 20.05.2019, 23:14:57 от CriZtmb »
*

sivers

  • Давно я тут
  • 633
  • 63 / 0
Re: TypeError: $ is not a function
« Ответ #7 : 20.05.2019, 23:13:24 »
тогда уберите defer из подключения скрипта:
Код
<script src="https://forma1.ru/js/uzform.min.js?komp=nok" defer></script>

а это перед ним оставьте как есть
Код
var $ = jQuery ;
На связи в телеге @sivers
*

CriZtmb

  • Новичок
  • 15
  • 1 / 0
Re: TypeError: $ is not a function
« Ответ #8 : 20.05.2019, 23:22:32 »
Да это я экспериментирую. И без defer не работает. Там странность я писал вот в чем: форма грузится, но не отправляется.
*

sivers

  • Давно я тут
  • 633
  • 63 / 0
Re: TypeError: $ is not a function
« Ответ #9 : 20.05.2019, 23:29:13 »
а потому что где-то после ее загрузки отрабатывает noconflict и отключает $, который используется формой.
На связи в телеге @sivers
*

CriZtmb

  • Новичок
  • 15
  • 1 / 0
Re: TypeError: $ is not a function
« Ответ #10 : 21.05.2019, 00:00:31 »
В общем решил проблемку. В модуле добавил
Код
<script type="text/javascript">
$ = jQuery.noConflict(true);
</script>
и все заработало
*

Physicist

  • Глобальный модератор
  • 933
  • 187 / 0
  • Рябов Денис
Re: TypeError: $ is not a function [Решено]
« Ответ #11 : 21.05.2019, 07:14:05 »
Если честно, то как-то странно, что $=jQuery не работало, а $=jQuery.noConflict(true) заработало. Переменная jQuery должна быть либо объявлена (и тогда работают оба способа), либо нет (и тогда ни один из них не работает, просто текст ошибки будет другой).
*

CriZtmb

  • Новичок
  • 15
  • 1 / 0
Re: TypeError: $ is not a function [Решено]
« Ответ #12 : 21.05.2019, 09:51:51 »
Да я тоже удивлен. Но главное работает как надо, все отправляется. Мне нормально
*

sivers

  • Давно я тут
  • 633
  • 63 / 0
Re: TypeError: $ is not a function [Решено]
« Ответ #13 : 21.05.2019, 09:59:43 »
Если честно, то как-то странно
там глупость допущена в самом скрипте uzform, который подключается с внешнего ресурса. В нем в самом начале наличие jQuery на странице определяется по доступности объекта jQuery, а дальнейшее обращение к объекту идет через $. Но после отработки noConflict jQuery есть, а $ нет. Дальше автор начинает костылить повторное объявление $ вручную, но из-за разного времени срабатывания скриптов у него вылазят все эти неприятные лаги.
На связи в телеге @sivers
*

CriZtmb

  • Новичок
  • 15
  • 1 / 0
Re: TypeError: $ is not a function [Решено]
« Ответ #14 : 21.05.2019, 11:07:42 »
Дальше автор начинает костылить повторное объявление $ вручную, но из-за разного времени срабатывания скриптов у него вылазят все эти неприятные лаги.
Ну мне главное чтоб заработало: костыли, не костыли - не столь принципиально. Скрипт uzform править возможности нет: им занимаются сторонние разработчики. Да и делают они все тааааак медленно: месяц пройдет прежде чем что-то поправят, а форма, подгружаемая скриптом должна работать сразу после установки. Вот и приходится костылить


*

sivers

  • Давно я тут
  • 633
  • 63 / 0
Re: TypeError: $ is not a function [Решено]
« Ответ #15 : 21.05.2019, 11:11:56 »
Ну мне главное чтоб заработало
Пожалуй, было б надежней выпилить noConflict со страницы. Это можно попробовать сделать в индексе шаблона (или в плагине) командой
unset($this->_scripts['/media/jui/js/jquery-noconflict.js']);
ПОСЛЕ подключения жумлавого jquery
На связи в телеге @sivers
*

CriZtmb

  • Новичок
  • 15
  • 1 / 0
Re: TypeError: $ is not a function [Решено]
« Ответ #16 : 21.05.2019, 11:18:48 »
Попробую сегодня вечерком.
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
Re: TypeError: $ is not a function [Решено]
« Ответ #17 : 21.05.2019, 11:36:27 »
Пожалуй, было б надежней выпилить noConflict со страницы. Это можно попробовать сделать в индексе шаблона (или в плагине) командой
unset($this->_scripts['/media/jui/js/jquery-noconflict.js']);
ПОСЛЕ подключения жумлавого jquery
для этого достаточно грамотно подключить сам jq:
Код: php
<?php Joomla\CMS\HTML\HTMLHelper::_('jquery.framework', false, null, false); ?>
первое false как раз отключает noconflict, второе (последнее) false отключает jquery-migrate
« Последнее редактирование: 21.05.2019, 11:41:57 от AlekVolsk »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Подгрузить системные стили на Front-end

Автор pavel2950

Ответов: 0
Просмотров: 57
Последний ответ 15.06.2019, 12:26:23
от pavel2950
Как подключить скрипт парсера к сайту? Решено!

Автор newnata

Ответов: 4
Просмотров: 85
Последний ответ 13.06.2019, 12:44:24
от newnata
Сломался сайт [Решено]

Автор Артём46

Ответов: 19
Просмотров: 180
Последний ответ 07.06.2019, 15:51:27
от Gerostrat
Не работает js [Решено]

Автор CriZtmb

Ответов: 17
Просмотров: 286
Последний ответ 07.05.2019, 19:54:52
от dmitry_stas
[Решено] Отключить Mootols, Jquery и Bootstrap в Joomla 3

Автор Pazys

Ответов: 113
Просмотров: 68489
Последний ответ 28.04.2019, 07:37:01
от effrit