Перейти к содержанию
sitecreator

jQuery новых версий (1.9, 1.10, 1.11 ...): у вас есть проблемы?

Рекомендуемые сообщения

В  ocStore 1.5.5.1.2 (последней на данный момент) используется jQuery ветки 1.7.*

Знаю, что была попытка выдать релиз данной версии с новой библиотекой jQuery.

Но почему то отказались, какой то конфликт был.

 

В недрах форума об этом уже писали.

 

Для меня это пока загадка, т. к. еще два года назад я уже использовал версию 1.9 для front-end-а.

Да, пришлось вместе с новой версией jQuery установить и другие библиотеки поновее, но в целом код js я не менял.

 

Сейчас я хотел бы все новые проекты делать только на новых версиях jQuery.

Т. к. в них учтены особенности новых браузеров и, самое главное, особенность планшетов и смартфонов, в том числе на windows 8 и windows phone.  Я думаю, что специалисты знают, что событие touchstart (прикосновение к сенсорному экрану) важно правильно распознавать и обрабатывать.  К сожалению, internet explorer даже 11-й версии не придерживается рекомендаций W3C, поэтому важно использование jQuery последних версий, если вы, конечно, желаете делать различия между событиями mouseover, click и touchstart.  Большинство разработчиков, правда, вообще в своих темах/шаблонах и модулях для front-end-а не заморачиваются этим вопросом.

 

Так почему же отказались в последней сборке ocStore от новой версии jQuery?

С чем несовместимость?

И почему это оказалась "неразрешимая" задача?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нельзя, так как ВСЕ модули пишутся с использованием 1.7 и если вы установите 1.9 то может быть куча конфликтов. 
Например вот сегодня столкнулся при переносе модуля на opencart 2.0, .live не работает, уже вместо него .on и таких нюансов может быть очень много. 

Самостоятельно установить себе новую версию вы конечно можете, взяв на себя все проблемы потом, но добавлять это в релиз ocstore нельзя. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нельзя, так как ВСЕ модули пишутся с использованием 1.7 и если вы установите 1.9 то может быть куча конфликтов. 

 

 

разве jquery-migrate не помогает?

которая как раз таки и сглаживает нюансы.

 

У меня не было проблем с модулями (благодаря jquery-migrate), потому и спрашиваю.

Пожалуйста, приведите пример несовместимых модулей. Интересно потестировать.

 

Вообще, это мрак какой-то использовать библиотеки 3-х и 4-х летней давности.

 

На крайний вариант, конечно, можно использовать две библиотеки jQuery одновременно: старую для старых модулей  и новую для новых.

Что собственно я и делал иногда.  Но иметь зоопарк jQuery в одном проекте - это как то некошерно совсем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(для разработчиков), все равно пишите хотя бы под 1,9, вторая версия не всем подойдет. Вы хоть понимаете различия между 1,9 и 2,0?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собственно необходимость возникла не ради самого "обновления", т. е. это не самоцель.

Просто не хватает возможностей старой библиотеки для реализации определенных идей.

 

вторая версия не всем подойдет.

Не достает поддержки ie6...ie8?

По мне, так это только плюс. не поддерживаю я ie8.

впрочем, меня вполне устраивает ветка 1.11. на 2-ю пока не переходил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нельзя, так как ВСЕ модули пишутся с использованием 1.7 и если вы установите 1.9 то может быть куча конфликтов. 

Например вот сегодня столкнулся при переносе модуля на opencart 2.0, .live не работает, уже вместо него .on и таких нюансов может быть очень много. 

Самостоятельно установить себе новую версию вы конечно можете, взяв на себя все проблемы потом, но добавлять это в релиз ocstore нельзя. 

Уже года три пишу JS

if ($.isFunction($.fn.on)) {
..on(
} else {
..live(
}

И не встречал "не совместимость" со своим кодом jquery 1.7 или 2.x

Или просто привык уже так писать :)

 

Да и в других JS (сторонних), которые идут с модулями тоже не заметил "не совместимости". Все отлично работает на 1.7.x и 2.x (правда с jquery 1.6.x никто не хочет работать)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую нужную мне версию (для 1.5.x новее, чем стоковая, для 2.0.x - старее) вместе с jQuery.noConflict

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если модуль использует плагины из jquery UI, то jquery-migrate не поможет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если модуль использует плагины из jquery UI, то jquery-migrate не поможет

 

Много ли таких дополнений?

 

Я ставил свежий jQuery, соответственно и свежий jquery UI, плюс  jquery-migrate, плюс свежий color-box и еще соответствующие обновления. Конфликтов не обнаружил.  Разумеется, что все на свете дополнения не тестировал.

 

Мне кажется довольно странным подход, когда программист в свежих модулях (а все популярные регулярно обновляются) используют подход, ориентированный исключительно на библиотеки многолетней давности, которые вообще не учитывают особенности тех же тачскрин планшетов.  Такое впечатление, что живем в мире исключительно десктопов.

 

Почему бы программистам не использовать универсальный подход, когда выходной код будет совместим с разными версиями jQuery, а не только древними?

 

Уважаемый markimax использует же такой подход, и успешно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто сейчас проделал большую работу по тестированию поведения браузеров в различных тачскрин- планшетах и был весьма удивлен различному поведению одних и тех же браузеров на разных платформах.  Например, firefox 37 на android платформе генерирует touch-events (touchstart, например), но тот же firefox 37 на планшете с windows 8.1 не генерирут данное событие (только mousedown), приходится использовать нестандартный mozInputSource.  Хотя Chrome 41 как на андроиде, так и на windows 8.1 отлично поддерживает touchstart.  Кроме того одинаковые браузеры совершенно ведут себя по разному при использовании zoom-а на тачскрин-девайсах.  На андроиде при увеличении (zoom пальцами) происходит просто масштабирование страницы с появлением "полос прокрутки", а на windows 8.1 происходит изменение viewport-а, т. е. никаких полос прокрутки не возникает, а происходит подстраивание страницы адаптивного сайта под новый viewport.

 

И огромное количество дополненией (всякие меню "мега" и "супер пупер") либо просто отвратительно работают на тачскрин-девайсах, либо ими вообще нельзя пользоваться.  Хорошо бы на это обратили внимание разработчики.  Я вообще не вижу смысла делать красивые меню, ориентированные на испольование наведения мышки и использование при этом эффекта jquery UI (разумеется из старой коллекции).  Все это невозможно пользователю оценить на планшете! Это вообще не работает на нем.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вообще не вижу смысла делать красивые меню, ориентированные на испольование наведения мышки и использование при этом эффекта jquery UI (разумеется из старой коллекции).  Все это невозможно пользователю оценить на планшете! Это вообще не работает на нем.

что такое планшет? - мобильное устройство! (неожиданно, да?)

так с чего это ты решил предъявлять претензии разработчикам, а не заказчикам за отсутствие бюджета для создания мобильной версии сайта? :?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

речь не только о меню jquery UI, в этой библиотеке много элементов, dialog например или slider.

 

вопрос в том, что после замены версии jquery и подключения migrate что-то может отвалиться. а кто это будет чинить?

автор модуля скажет "я использовал функции движка и не думал о том что кому-то взбредет в голову отключать скрипты с которыми работает мой модуль"

а у автора шаблона, обновившего jquery хватит знаний понять и починить проблему?

 

может возникнуть предложение не использовать javascript библиотеки, которые поставляет двиг, а добавлять каждый раз свои. но в этом случае магазин может превратиться в зоопарк с кучей разных "своих" colorbox-1.3.4 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Вы комментируете как гость. Если у вас есть аккаунт, пожалуйста, войдите
Ответить в этой теме...

×   Вы вставили контент с форматированием.   Удалить форматирование

  Разрешено использовать не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От Dragon
      jQuery async load
      Скачать/Купить дополнение Модуль позволяет переместить javascript-скрипты из шапки в подвал сайта и подгружать их асинхронно, тем самым ускорить отрисовку страницы, увеличить баллы в Google Pagespeed и повысить ранжирование в поисковой выдаче.

      Важно: модуль распространяется по принципу – одна лицензия на один домен.
       
      С его помощью можно добиться 100/100 баллов в Google PageSpeed Insights. Но только если вы выполнили все рекомендации Google PageSpeed Insights, кроме пункта "Удалите код JavaScript и CSS, блокирующий отображение верхней части страницы". В противном случае результат может быть всего на пару процентов лучше. 
      Демо: https://matuvi.com/oc2/async/


       
      Внимание. На демо помимо самого модуля оптимизированы изображения и включен кэш (не входит в модуль). 

      Протестировано на версиях OpenCart/ocStore 2.0.1.1, 2.1.0.2 и 2.3.0.2.3 на стандартных шаблонах со стандартным набором модулей.
      Автор модуля не гарантирует стабильную работу со сторонними плагинами и шаблонами.

      Теоретически модуль будет работать и на других версиях и сборках (пока кроме 3+).
      Если самостоятельно модуль установить не удалось: пишите в тему поддержки - поможем настроить.
      Добавил Dragon Добавлено 22.01.2018 Категория Кэширование, сжатие, ускорение Системные требования Сайт разработчика https://matuvi.com/ Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика  
    • От Dragon
      Модуль позволяет переместить javascript-скрипты из шапки в подвал сайта и подгружать их асинхронно, тем самым ускорить отрисовку страницы, увеличить баллы в Google Pagespeed и повысить ранжирование в поисковой выдаче.

      Важно: модуль распространяется по принципу – одна лицензия на один домен.
       
      С его помощью можно добиться 100/100 баллов в Google PageSpeed Insights. Но только если вы выполнили все рекомендации Google PageSpeed Insights, кроме пункта "Удалите код JavaScript и CSS, блокирующий отображение верхней части страницы". В противном случае результат может быть всего на пару процентов лучше. 
      Демо: https://matuvi.com/oc2/async/


       
      Внимание. На демо помимо самого модуля оптимизированы изображения и включен кэш (не входит в модуль). 

      Протестировано на версиях OpenCart/ocStore 2.0.1.1, 2.1.0.2 и 2.3.0.2.3 на стандартных шаблонах со стандартным набором модулей.
      Автор модуля не гарантирует стабильную работу со сторонними плагинами и шаблонами.

      Теоретически модуль будет работать и на других версиях и сборках (пока кроме 3+).
      Если самостоятельно модуль установить не удалось: пишите в тему поддержки - поможем настроить.
    • От Aky
      Как передать POST параметр через ajax в файл controller модуля OpenCart ?
       
      Есть модуль "latest"  Файл контроллера latest.php, нужно передать туда параметр width через Ajax/Jquery  
       
      Как обратится к этому файлу? 
       
      Как работать с Ajax знаю, как параметры передать знаю, как принять знаю, но как обратится к нужному файлу в OpenCart?
       
      При попытках обращения по "url:' скрипт выдает ошибку  "404 (not found)"
       
      Пробовал вот так:
      url: 'index.php?route=extension/module/latest',  url: 'index.php?route=module/latest',  url: '/catalog/controller/extension/module/latest',   
      Если перейти на прямую по ссылки: "/catalog/controller/extension/module/latest.php"  выдает ошибку HTTP ERROR 500
    • От Techno1og
      Обнаружили на страницах сайта множество ссылок дублирующих друг друга, эти ссылки располагаются в разных блоках, виджетах и разделах сайта.
       
      Например в  блоке с новостями: ссылка дублируется аж 3 раза: ссылка на статью, ссылка с изображения, ссылка на кнопке подробнее. Есть дублирующие ссылки в главном слайдере, дубли в миниатюрах каждого слайда, Дубли в кнопках вида «далее», «подробнее» - даже во внутренних ссылках нельзя использовать не точные анкоры, анкор должен соответствовать теме URL , поэтому такие кнопки лучше завернуть в JS.   Категории товаров.  Принято считать, что сквозные элементы сайта, в частности меню, поисковиками не учитываются, либо учитываются очень слабо, т.к. присутствуют на каждой странице. Тем не менее имеют место быть различные варианты. Возьмем для примера 4 крупных интернет-магазина:  www.mvideo.ru, www.eldorado.ru и www.dns-shop.ru, www.tehnosila.ru. На сайте М.Видео абсолютно всё меню навигации с категориями и подкатегориями закрыто в тег noindex. Аналогичная картина на сайте Эльдорадо. Закрывать меню в noindex имеет смысл только чтобы не учитывать его текстовую составляющую, чтобы меню не попадало в сниппет на поисковой выдаче, чтобы не мешало определению релевантной страницы. Если запустит Краулер и посмотреть как он определить релевантные страницы, то можно увидеть что некоторые стр. определяются не верно. Так же есть повторяющиеся ссылки в Footer , микроразметке, и т.д, и прочих элементах...  
      судя по отчету ScreaminFrog - google видит все  внутренние ссылки, воспринимает, и распределяет вес с учетом всех внутренних факторов. Ссылки нужно закрыть, но по умолчанию такого решения в Opencart не предлагается, поэтому ищем альтернативные способы, изучаем правила закрытия ссылок:
       
      Внутренние ссылки не должны содержать атрибута rel=”nofollow”. В противном случае вес со страницы будет утекать, то есть будет попросту испаряться. Атрибут rel=”nofollow” необходимо использовать в редких случаях случаях, когда ссылка ведет на неиндексируемую страницу. Ссылки всегда должны вести на индексируемые страницы сайта, иначе будет повторяться история, описанная в пункте №1 выше. Даже при формировании внутренних ссылок при перелинковке следует использовать уникальные анкоры. Внутренние ссылки всегда должны быть прямыми и идти строго на целевые страницы. Это значит, что переход по ссылке должен отдавать ответ 200 OK. Я не говорю о том, что битые ссылки недопустимы, это очевидно, а я говорю о том, что ссылки должны идти без промежуточных 301-редиректов (а если там еще и не 301, а 302-редирект, то совсем беда). Не редко, когда меняют структуру, либо по вине верстальщика  
      отследить на глаз многие мелочи трудно, и чтобы потом не удивляться - советую использовать краулер. (XENU или родной Screaming Frog)
       
      Нашел следующие методы закрытия внешних и внутренних ссылок на jQuery AJAX:
      (взяты со стороннего ресурса; там где проводили эксперимент пишут, что все способы  рабочие)
       
      Вариант №1 —
      <a href="#" class="link" data-link="http://goo.gl">ссылка</a> Скрипт, который будет обрабатывать ссылку и открывать ее:
      <script>$('a.link').click(function(){window.open($(this).data("link"));return false;});</script> В этом варианте вам не надо будет производить никаких дополнительных доработок стилей в css, наша ссылка будет выглядеть как и все остальные «нормальные» ссылки.
      Вариант №2 —
      Код ссылки на странице:
      <a href="#" class="link" rel="http://goo.gl">ссылка</a> Скрипт, который будет обрабатывать ссылку и открывать ее:
      <script>$('a.link').click(function(){window.open($(this).attr("rel"));return false;});</script> Вариант №3 —
      Код ссылки на странице:
      <span class="hidden-link" data-link="http://goo.gl">ссылка</span> Скрипт, который будет обрабатывать ссылку и открывать ее:
      <script>$('.hidden-link').click(function(){window.open($(this).data('link'));return false;});</script> как пишет автор данный вариант100% не вызовет никаких подозрений у поисковика, так как даже структурно в коде нет ссылки, а просто кусок текста (он же анкор) выделен спаном <span>, что довольно часто используется при разметке документов.
      Однако и отображаться такая «ссылка» будет как обычный текст на странице. Придется пошаманить с css, чтобы имитировать ссылку. Например, добавить в свой css:
      span.hidden-link { color: #00ff00; /*-цвет ссылки-*/ text-decoration: underline; /*-подчеркивание-*/ cursor: pointer; /*-указатель в виде пальца-*/ } Вариант №4 — Еще один вариант скрытия ссылки
      <span class="hidden-link" data-link="http://goo.gl">ссылка</span> Скрипт, который будет обрабатывать ссылку и открывать ее:
      <script>$('.hidden-link').replaceWith(function(){return'<a href="'+$(this).data('link')+'">'+$(this).text()+'</a>';})</script> Отличие этого способа от предыдущего в том, что js-скрипт меняет на странице html-код «якобы» ссылки на нормальную ссылку после полной загрузки документа. Поэтому никаких правок в css вносить не придется, а ссылка будет открываться как и обычная.
      Способ так же прошел проверку экспериментом — ссылка не индексируется и не видится поисковыми роботами и, соответстенно, не учитывается.
       
      Вариант №5 — Универсальный вариант скрытия любого контента, например, картинок
      ..... Предыдущий вариант не работает в том случае, если в анкоре ссылки стоит картинка. А такие варианты довольно часто встречаются: счётчики, информеры, партнёрские баннеры. Поэтому предлагаю использовать вместо метода .text () метод .html (), он будет более универсальным.
      Код элемента, в данном случае ссылки, на странице, будет такой:
      <span class="hidden-link" data-link="http://goo.gl">внешняя ссылка</span> * — Чтобы закрыть картинку, в коде, указанном выше, необходимо заменить «внешняя ссылка» на код <img src="...">.
      Скрипт, который будет обрабатывать ссылку или любой другой элемент:
      <script>$('.hidden-link').replaceWith(function(){return'<a href="'+$(this).data('link')+'">'+$(this).html()+'</a>';})</script> Как вы понимаете, отличие данного способа от всех других в том, что в скрипт можно «спрятать» не только ссылку, но и картинку со ссылкой или еще что-нибудь. Все проверено — все работает
       
      6.  Вариант №6 —  как пишут в коментариях самый лучший.
      $('.hidden-link').replaceWith (function (){return'<a href="'+$(this).data ('link')+'" title="'+$(this).text ()+'">'+$(this).html ()+'</a>';})  
      Интересно кто какие варианты использует и на что нужно обратить внимание еще.
       
       
    • От speecher
      Добрый день, прошу о точечной подсказке.
       
      Перевел сайт на хттпс: отредактировал файлы конфиг, сделал редирект, включил в настройках самого магазина.
      Сначала все было ок, позже вылезла проблема: часть изображение открываются по ссылкам HTTP, из-за этого пишет, что соединение не защищено.
       
      В консольке разработчиков везде одни и те же 8 фото - всякие спрайты для кнопок поиска и т.д. Если правильно понял, запрос на них дает вот этот скрипт: catalog/view/javascript/jquery/jquery-1.7.1.min.js
       
      Открывал его, добавил в двух местах к хттп букву "с", но без толку.
      Вопрос, как заставить это недоразумение запрашивать картинки по защищеному соединению ?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.