Как появляется проблема:
Когда с любой страницы открываю выезжающее окно мини-корзины (из шапки сайта) и жму "Посмотреть корзину", после чего жму кнопку назад в браузере.
Тема с этим багом:
https://maudern.thunder-stores.com/shop/
Ломается работа выезжающего окна (для мини-корзины и фильтров, например).
На
html
и
body
, после нажатия кнопки Назад вешается
.noscroll
, который по идее должен убираться после нажатия ссылки внутри выезжающего окна, если исходить из скрипта:
(function($) {
"use strict";
// open shop filters.
$( document ).on(
'click touch',
'.woocommerce .woocommerce-product-loop-header .woocommerce-product-filters span.filters-toggle.offcanvas-filters-toggle',
function(){
$( 'html, body' ).addClass( 'noscroll' );
$( '.offcanvas.offcanvas-shop-filters' ).addClass( 'open' );
$( '.overlay' ).addClass( 'visible right' ).removeClass( 'delay' );
}
);
// open minicart.
$( document ).on(
'click touch',
'#site-header #secondary-menu-wrapper ul#menu-site-tools > li#shopping-bag-site-tool',
function(){
$( 'html, body' ).addClass( 'noscroll' );
if ( $( document ).find( '#site-header' ).hasClass( 'search-open' ) ) {
// close search form.
$( '#site-header #secondary-menu-wrapper ul#menu-site-tools > li#search-site-tool' ).removeClass( 'active' );
$( '.overlay' ).removeClass( 'visible' );
setTimeout(
function() {
$( '#site-header' ).removeClass( 'search-open' );
},
200
);
setTimeout(
function() {
$( '.offcanvas.offcanvas-minicart' ).addClass( 'open' );
$( '.overlay' ).addClass( 'visible right' );
},
800
);
} else {
$( '.offcanvas.offcanvas-minicart' ).addClass( 'open' );
$( '.overlay' ).addClass( 'visible right' ).removeClass( 'delay' );
}
}
);
$( document.body ).on(
'added_to_cart',
function(){
$( '#site-header #secondary-menu-wrapper ul#menu-site-tools > li#shopping-bag-site-tool' ).trigger( 'click' );
}
);
// close offcanvas.
$( document ).on(
'click touch',
'.overlay, .offcanvas-close',
function(){
$( 'html, body' ).removeClass( 'noscroll' );
$( '.offcanvas' ).removeClass( 'open' );
$( '.overlay' ).removeClass( 'visible right left' ).addClass( 'delay' );
}
);
// close offcanvas on link click.
$( document ).on(
'click touch',
'.offcanvas a',
function(){
// check for internal links.
if ( ! $( this ).attr( 'href' ).startsWith( '#' ) &&
! $( this ).attr( 'href' ).startsWith( '/' ) &&
! $( this ).attr( 'href' ).startsWith( './' ) &&
! $( this ).attr( 'href' ).startsWith( '../' ) &&
! $( this ).attr( 'href' ).startsWith( $( location ).attr( "href" ) ) &&
! $( this ).hasClass( 'remove' ) ) {
// hide offcanvas.
$( '.offcanvas' ).hide();
// hide overlay.
$( '.overlay' ).hide();
}
}
);
})( jQuery );
Если перейти с главной страницы через мини-корзину на страницу корзины, затем нажать Назад, то по возвращении мини-корзина открыта. Если тоже самое проделать, например, со страницы магазина — по нажатию Назад корзина не отображается, но классы запрещающие скролл навешиваются, полностью ломая любое взаимодействие с этим выезжающим окном и любыми кнопками его вызывающими.
Это функционал платной темы, на секундочку, с площадки Woocommerce.
Я попытался в меру своих сил и знаний это побороть, в частности проверять, есть ли на нужных элементах класс .noscroll и убирать его при window.onload. Не помогло.
Выручайте.