iOS 13, safari, в категориях не откликаются ссылки подкатегорий

Временное решение для версии 4.10.x:
I. Автоматический вариант:
Diff-файл:


Инструкция, как воспользоваться этим файлом:
https://www.cs-cart.ru/docs/latest/upgrade/apply_diff_file.html

II. Ручной вариант

II. Ручной вариант:

  1. Открыть файл:
    js/tygh/responsive.js

  2. Найти функцию detectMenuWidth (около 154 строки).

  3. Найти в ней функцию _getSubmenuOriginWidth (около 198 строки).

  4. Заменить код:

             function _getSubmenuOriginWidth ($submenu) {
                 $submenu.css({ visibility: 'hidden', left: 0 });
                 var _width = $submenu.outerWidth() || 0;
    
                 // remove inline styles perfectly
                 $submenu.get(0).style.left       = '';
                 $submenu.get(0).style.visibility = '';
    
                 return _width;
             }
    

на код:

            function _getSubmenuOriginWidth ($submenu) {
                // FIXEME: iOS 13 bug with visibility: hidden
                // $submenu.css({ visibility: 'hidden', left: 0 });
                // var _width = $submenu.outerWidth() || 0;
                var _width = $submenu.position().left + $submenu.width();

                // remove inline styles perfectly
                // $submenu.get(0).style.left       = '';
                // $submenu.get(0).style.visibility = '';

                return _width;
            }

Временное решение для версии 4.9.x:
I. Автоматический вариант:
Diff-файл:


Инструкция, как воспользоваться этим файлом:
https://www.cs-cart.ru/docs/latest/upgrade/apply_diff_file.html

II. Ручной вариант

II. Ручной вариант:

  1. Открыть файл:
    js/tygh/responsive.js

  2. Найти функцию detectMenuWidth (около 148 строки).

  3. Заменить код:

             var elm = $(e.target);
             var menuElm = elm.parents(".cm-responsive-menu");
             var isHorisontalMenu = menuElm.parent().hasClass("ty-menu-vertical") ? false : true;
    
             if(isHorisontalMenu) {
                 var menuWidth = menuElm.outerWidth();
                 var menuOffset = menuElm.offset();
                 var menuItemElm = elm.closest('.cm-menu-item-responsive');
                 $('.ty-menu__submenu-to-right').removeClass('ty-menu__submenu-to-right');
                 var submenu, position;
    
                 // Detect menu collisions
                 if(menuItemElm) {
                     if(typeof menuItemElm.offset()  !== "undefined") {
                         menuWidth = menuWidth - (menuItemElm.offset().left - menuOffset.left)
                     }
                     submenu = $('.cm-responsive-menu-submenu', menuItemElm).first();
                     
                     if(submenu.length) {
                         submenu.css({visibility: "hidden", left: 0});
                         position = submenu.outerWidth();
                         if(position > menuWidth) {
                             submenu.parent().addClass('ty-menu__submenu-to-right');
                         }
                         submenu.css({visibility: "", left: "auto"});
                     }
    
                 }
             }
    

на код:

            var elm = $(e.target);
            var menuElm = elm.parents(".cm-responsive-menu");
            var isHorisontalMenu = menuElm.parent().hasClass("ty-menu-vertical") ? false : true;

            if(isHorisontalMenu) {
                var menuWidth = menuElm.outerWidth();
                var menuOffset = menuElm.offset();
                var menuItemElm = elm.closest('.cm-menu-item-responsive');
                $('.ty-menu__submenu-to-right').removeClass('ty-menu__submenu-to-right');
                var submenu, position;

                // FIXEME: iOS 13 bug with visibility: hidden
                // Detect menu collisions
                // if(menuItemElm) {
                //     if(typeof menuItemElm.offset()  !== "undefined") {
                //         menuWidth = menuWidth - (menuItemElm.offset().left - menuOffset.left)
                //     }
                //     submenu = $('.cm-responsive-menu-submenu', menuItemElm).first();
                    
                //     if(submenu.length) {
                //         submenu.css({visibility: "hidden", left: 0});
                //         position = submenu.outerWidth();
                //         if(position > menuWidth) {
                //             submenu.parent().addClass('ty-menu__submenu-to-right');
                //         }
                //         submenu.css({visibility: "", left: "auto"});
                //     }

                // }
                if (menuItemElm) {
                    var submenu = $('.cm-responsive-menu-submenu', menuItemElm);
                    if (submenu.length) {
                        var position = submenu.position().left + submenu.width();
                        if (position > menuWidth) {
                            submenu.parent().addClass('ty-menu__submenu-to-right');
                        }
                    }

                }
            }

Причина бага: баг вызван из-за некорректной работы CSS-свойства visibility: 'hidden' на iOS 13.

1 лайк