Jump to content


Photo
- - - - -

Частый конфликт скриптов


Best Answer SmetDenis , 19 March 2015 - 08:12

1. не кодер практически, потому вряд ли смогу вырезать. Хотя если код выглядит более-менее одинаково и будет пример - думаю справлюсь

Чтобы убрать лишнее подключение своими силами, не обязательно быть программистом. Достаточно применить смекалку.

Например в вашем случае. Копируем имя неугодно нам файла
zym6_200x0.png

Открываем тотал коммандер и делаем полнотектовый поиск по всем файлами (или только по файлам фреймворка)
На примере JBZoo
emec_200x0.png

Открываем файла и комментируем подключение. Путь до файла подсказывает нам, что это где то в системном плагине helix.
Обычно это выглядит вот так

... ->addScript('путь до файла/jquery.min.js');

--------------------
Ликбез по JavaScript от программиста для web-мастеров, которые не понимают что вообще происходит...

Почему происходит конфликт скриптов?

Допустим есть у нас вот такая ситуация
rljt_200x0.png

Что мы видим.
1. Подключилась библиотека jQuery. Она сделал это первой в списке. Это правильно.
2. Подключаются плагины для jQuery. В нашем случае это JBZoo + другие, например ниже есть "jquery.qtip.js"
3. Снова подключается фреймворк jQuery, который автоматически стирает всю ранее инициализированную систему. Т.е делает так как будто всех расширений на 2м пункте и не было.

В итоге наши старания в виде инициализации вкладок по середине страницы (например), уже не сработают.
1j24_200x0.png

Включение jQuery от helix просто стерло в памяти браузера все что было объявлено.
Как результат - вкладки не работают.
А чью это вкладки? JBZoo. Кто виноват? Криворукие разработчики JBZoo :) +1 топик на форуме о нескольких jQuery :)

Тот кто хоть чуть-чуть знает, что такое функция - вот вам пример
1zc8_200x0.png

Точно так же и с JQuery. Переопрделелили её и все стерлось.
Порядок подключения JS скриптов ОЧЕНЬ и ОЧЕНЬ и ОЧЕНЬ важен.

Очень странно что разработчики популярного фреймворка не знают этих основ и в плагинах нет опции отключения. Что как бы намекает...

---------------
Что делать?

Вариантов несколько.
1. Уповать на бездарных разработчиков Joomla/Zoo/JBZoo/Helix (нужное подчеркнуть) только потому что вы не знаете основ JS.
2. Использовать плагины, которые с помощью суровых регулярных выражений ищут проблемы. Кстати там можно указывать имена файлов.
3. Проявить смекалку и найти последнее не верно подключение. Просто закоментировать строку и жить спокойно.

---------------
Почему я считаю что JBZoo работает правильно?

Не первый день вижу это все, вы не первый кто не знает основ web-разработки.
А еще мелочь... мы используем jQuery из Joomla (для версий старше 3.x) или jQuery из Zoo (для 2.5).
Таким образом, я знаю что Joomla подключит файлы верно (т.е первым в списке), перед остальными плагинами.

---------------
Почему это такой популярный баг в Joomla ?

1. Не компетентные разработчики, которые втыкают свои версий jQuery хотя Joomla имеет на борту свой файл.
2. Всякие мелкие модули слайдеров, менюшек и прочей ерунды включают свой файл не заботясь о окружающих, обычно их заботит красота менюшки.
3. ну и web-мастера... Туча народу делает сайты без знаний CSS, что уж говорить о JavaScript...

---------------
Почему бы не сделать так, чтобы JBZoo контролировал подключения JS ?

Область действия нашего кода внутри Joomla довольно узкая, т.е это выглядит так
- инициализация Joomla
- что-то сработало (плагины)
- JBZoo
- что-то сработало (модули)
- что-то сработало (шаблон Joomla)
- что-то сработало (плагины)

Что происходит/подключается вокруг нас вне сферы работы нашего кода.
Делать костыли, чтобы это объять и сделать новых багов ... нет ... Может подключаться что угодно и как угодно, это невозможно контролировать. Например, как распознать что файл с именем "jqsystem.js" - это jquery ? Ответ: из PHP никак...


---------------
Ели кто-то до сих пор считает, что мы не знаем о существовании проблема с несколькими jQuery или считаете нас неграмошными-ни-разу... то... ничего не могу с этим поделать. Видимо был не убедителен выше.

Go to the full post


  • This topic is locked This topic is locked
17 replies to this topic

#11 registr

registr
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 1210
  • topics: 345

Posted 18 March 2015 - 21:02

да какие обиды, с чего бы:)

И реально я на хеликсе уже не первый сайт делаю с JBZOO и проблем не было, но реально были из-за конфликта с квери других расширений, чуть ли не через раз. серьезно, а вот счас именно с хеликсом или еще из-за чего, словом, придется другой шаблон ставить, чего париться в самом деле:)


  • 0

#12 Na_uM

Na_uM
  • JBZoo User (rus)
  • User rate: 15.9
  • posts: 782
  • topics: 61

Posted 18 March 2015 - 21:08

что ж вы сразу сдаетесь, вам же подсказывают, нет достаточных знаний попробуйте поставить один из двух плагинов Ursa вам кидала выше где то ссылку


  • 0

#13 laRus

laRus
  • JBZoo User (rus)
  • User rate: 60
  • posts: 1334
  • topics: 31

Posted 18 March 2015 - 21:17

да какие обиды, с чего бы
Это хорошо!  :)  А то меня чтой-то совесть стала мучать: у человека проблемы, а я тут развеселилась!  (blush)
  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..

#14 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.5
  • posts: 6393
  • topics: 15

Posted 18 March 2015 - 23:55

Как уже сказали, вариантов здесь несколько:

 

1. Искать подключение jquery в файлах плагина вашего вреймворка и вырезать его там.

 

2. Точно так же вырезать поключение в коде JBZoo.

 

3. Поставить один из плагинов, приведенных в соответствующей теме, которую давали выше.

 

Так уж устроена библиотека jquery - нельзя ее подключать несколько раз. И эти конфликты неизбежны, если используются различные компоненты, плагины, модули. Каждому из них для работы нужен jquery - каждый его будет подключать, никто не будет надеяться, что библиотека уже подключена чем-то еще.


Edited by Sliapy, 18 March 2015 - 23:56.

  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#15 registr

registr
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 1210
  • topics: 345

Posted 19 March 2015 - 05:40

1. не кодер практически, потому вряд ли смогу вырезать. Хотя если код выглядит более-менее одинаково и будет пример - думаю справлюсь:)
2.аналогично:) Может покажете в каком файле какой кусок удалить именно в JBZOO и именно для вкладок в карточке товаров?
3. попробовал этот jQuery Easy - не помогло, переигрался с настройками - ноу результата


  • 0

#16 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 19 March 2015 - 08:12   Best Answer

*
POPULAR

1. не кодер практически, потому вряд ли смогу вырезать. Хотя если код выглядит более-менее одинаково и будет пример - думаю справлюсь

Чтобы убрать лишнее подключение своими силами, не обязательно быть программистом. Достаточно применить смекалку.

Например в вашем случае. Копируем имя неугодно нам файла
zym6_200x0.png

Открываем тотал коммандер и делаем полнотектовый поиск по всем файлами (или только по файлам фреймворка)
На примере JBZoo
emec_200x0.png

Открываем файла и комментируем подключение. Путь до файла подсказывает нам, что это где то в системном плагине helix.
Обычно это выглядит вот так

... ->addScript('путь до файла/jquery.min.js');

--------------------
Ликбез по JavaScript от программиста для web-мастеров, которые не понимают что вообще происходит...

Почему происходит конфликт скриптов?

Допустим есть у нас вот такая ситуация
rljt_200x0.png

Что мы видим.
1. Подключилась библиотека jQuery. Она сделал это первой в списке. Это правильно.
2. Подключаются плагины для jQuery. В нашем случае это JBZoo + другие, например ниже есть "jquery.qtip.js"
3. Снова подключается фреймворк jQuery, который автоматически стирает всю ранее инициализированную систему. Т.е делает так как будто всех расширений на 2м пункте и не было.

В итоге наши старания в виде инициализации вкладок по середине страницы (например), уже не сработают.
1j24_200x0.png

Включение jQuery от helix просто стерло в памяти браузера все что было объявлено.
Как результат - вкладки не работают.
А чью это вкладки? JBZoo. Кто виноват? Криворукие разработчики JBZoo :) +1 топик на форуме о нескольких jQuery :)

Тот кто хоть чуть-чуть знает, что такое функция - вот вам пример
1zc8_200x0.png

Точно так же и с JQuery. Переопрделелили её и все стерлось.
Порядок подключения JS скриптов ОЧЕНЬ и ОЧЕНЬ и ОЧЕНЬ важен.

Очень странно что разработчики популярного фреймворка не знают этих основ и в плагинах нет опции отключения. Что как бы намекает...

---------------
Что делать?

Вариантов несколько.
1. Уповать на бездарных разработчиков Joomla/Zoo/JBZoo/Helix (нужное подчеркнуть) только потому что вы не знаете основ JS.
2. Использовать плагины, которые с помощью суровых регулярных выражений ищут проблемы. Кстати там можно указывать имена файлов.
3. Проявить смекалку и найти последнее не верно подключение. Просто закоментировать строку и жить спокойно.

---------------
Почему я считаю что JBZoo работает правильно?

Не первый день вижу это все, вы не первый кто не знает основ web-разработки.
А еще мелочь... мы используем jQuery из Joomla (для версий старше 3.x) или jQuery из Zoo (для 2.5).
Таким образом, я знаю что Joomla подключит файлы верно (т.е первым в списке), перед остальными плагинами.

---------------
Почему это такой популярный баг в Joomla ?

1. Не компетентные разработчики, которые втыкают свои версий jQuery хотя Joomla имеет на борту свой файл.
2. Всякие мелкие модули слайдеров, менюшек и прочей ерунды включают свой файл не заботясь о окружающих, обычно их заботит красота менюшки.
3. ну и web-мастера... Туча народу делает сайты без знаний CSS, что уж говорить о JavaScript...

---------------
Почему бы не сделать так, чтобы JBZoo контролировал подключения JS ?

Область действия нашего кода внутри Joomla довольно узкая, т.е это выглядит так
- инициализация Joomla
- что-то сработало (плагины)
- JBZoo
- что-то сработало (модули)
- что-то сработало (шаблон Joomla)
- что-то сработало (плагины)

Что происходит/подключается вокруг нас вне сферы работы нашего кода.
Делать костыли, чтобы это объять и сделать новых багов ... нет ... Может подключаться что угодно и как угодно, это невозможно контролировать. Например, как распознать что файл с именем "jqsystem.js" - это jquery ? Ответ: из PHP никак...


---------------
Ели кто-то до сих пор считает, что мы не знаем о существовании проблема с несколькими jQuery или считаете нас неграмошными-ни-разу... то... ничего не могу с этим поделать. Видимо был не убедителен выше.


  • 5
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#17 laRus

laRus
  • JBZoo User (rus)
  • User rate: 60
  • posts: 1334
  • topics: 31

Posted 19 March 2015 - 09:04

Оч.доходчиво, ИМХО!  8)  ...только по-спокойнее, по-спокойнее   ;) .. ну пожааааалуйста!!!  :)


  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..

#18 Na_uM

Na_uM
  • JBZoo User (rus)
  • User rate: 15.9
  • posts: 782
  • topics: 61

Posted 19 March 2015 - 09:10

Чтобы убрать лишнее подключение своими силами, не обязательно быть программистом. Достаточно применить смекалку.

этот бы топик fix и на самое видное место 


  • 2




Click to return to top of page in style!