(function () { // карта: номер слайда → ссылка на видео var videoByIndex = {}; function createVideoTag(src, extraClass) { extraClass = extraClass || ''; return '' + ''; } function playAllVideos($ctx) { $ctx.find('video').each(function () { try { this.play(); } catch (e) {} }); } // ---------- 1. ВИДЕО В ОСНОВНОМ СЛАЙДЕРЕ ---------- function initVideoSliders() { $('.t-slds__items-wrapper').each(function () { var $slider = $(this); if ($slider.data('video-inited')) return; var $rec = $slider.closest('.t-rec'); $slider.find('.t-slds__item').each(function () { var $item = $(this); var index = $item.attr('data-slide-index'); var $meta = $item.find('meta[itemprop="caption"]'); if (!$meta.length) return; var url = $meta.attr('content') || ''; if (!url || url.indexOf('http') !== 0) return; // запоминаем ссылку для zoomer'а videoByIndex[index] = url; var videoHtml = createVideoTag(url); // большой слайд $item.find('.t-slds__bgimg') .addClass('hide-bg') .html(videoHtml); // миниатюра $rec .find('.t-slds__thumbsbullet[data-slide-bullet-for="' + index + '"] .t-slds__bgimg') .addClass('hide-bg') .html(videoHtml); }); // при смене слайда — запускать видео var target = $slider[0]; if (target) { var observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { if (mutation.attributeName === 'class') { playAllVideos($rec); } }); }); observer.observe(target, { attributes: true }); } $slider.data('video-inited', true); }); } // ---------- 2. КЛИК ПО МИНИАТЮРЕ С ВИДЕО ---------- $(document).on('click', '.t-slds__thumbsbullet', function () { var index = $(this).attr('data-slide-bullet-for'); var $rec = $(this).closest('.t-rec'); // видео в большом слайде + в миниатюре var $videos = $rec.find('.t-slds__item[data-slide-index="' + index + '"] video') .add($(this).find('video')); $videos.each(function () { try { this.currentTime = 0; this.play(); } catch (e) {} }); }); // ---------- 3. ВИДЕО В ZOOMER (УВЕЛИЧЕННЫЙ ПРОСМОТР) ---------- function initZoomerVideos() { var $zoomer = $('.t-carousel__zoomer:visible'); if (!$zoomer.length) return; $zoomer.find('.t-carousel__zoomer__item').each(function () { var $itemZoomer = $(this); var num = $itemZoomer.attr('data-zoomer-slide-number'); if (!num) return; var url = videoByIndex[num]; if (!url) return; // для этого слайда видео нет var videoHtml = createVideoTag(url, 'zoomer-video'); $itemZoomer .find('.t-carousel__zoomer__wrapper') .html(videoHtml); }); playAllVideos($zoomer); var $track = $zoomer.find('.t-carousel__zoomer__track'); if ($track.length && !$track.data('video-observer-init')) { var observer = new MutationObserver(function () { playAllVideos($zoomer); }); observer.observe($track[0], { attributes: true }); $track.data('video-observer-init', true); } } // следим за появлением zoomer'а в DOM (он добавляется динамически) var bodyObserver = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { $(mutation.addedNodes).each(function () { var $n = $(this); if ($n.hasClass && ($n.hasClass('t-carousel__zoomer') || $n.find('.t-carousel__zoomer').length)) { setTimeout(initZoomerVideos, 300); } }); }); }); bodyObserver.observe(document.body, { childList: true, subtree: true }); // ---------- ЗАПУСК ЛОГИКИ ---------- // загрузка страницы (включая прямую ссылку на товар) $(window).on('load', function () { setTimeout(initVideoSliders, 400); setTimeout(initVideoSliders, 1500); // на случай ленивой загрузки }); // открытие товара в попапе $(document).on('click', 'a[href*="/tproduct/"]', function () { setTimeout(function () { initVideoSliders(); }, 700); }); })();
Выкуп
показ коллекции
Услуга доступна для позиций стоимостью выше 60 000 ₽
поиск ножей
обслуживание
кастомизация