Пользователи интернета нередко открывают различные товары из одного магазина Shop-Script в нескольких вкладках браузера, просматривая их и добавляя в свою корзину.
Если покупатель добавляет товар в корзину в одной из вкладок и затем переключается на другую, информация о содержимом корзины в верхней части страницы не обновляется. Это может вызвать недоумение у посетителей, так как они точно знают, что положили что-то в корзину.
Подобная ситуация повторяется, когда пользователь добавляет товар в корзину и использует кнопку "Назад" в браузере. В большинстве случаев корзина не обновляется, даже когда пользователь находится на странице корзины в различных темах дизайна.
Это создает путаницу и может негативно сказаться на общем пользовательском опыте, так как клиенты не могут быть уверены, что их выбор учтен. Поэтому важно обеспечить правильное обновление информации о содержимом корзины, чтобы избежать таких ситуаций.
// Позволяет обновлять счетчик открытых вкладок, страниц из кэша
async function getCartCount(counter) {
const response = await fetch('/cart/save/');
const {data, status} = await response.json();
const $cart = $(counter).closest('.cart-block');
if (status == 'ok') {
localStorage.setItem('cartcounter', data.count);
$(counter).text( data.count );
$cart.toggleClass('empty', data.count == 0);
}
}
$(document).ready(function () {
// вызываем счетчик корзины
window.addEventListener('storage', event => {
if (event.key != 'cartcounter') return;
getCartCount('.js-cart_count');
});
getCartCount('.js-cart_count');
});

