1(function ($) { 2 /** 3 * ÐниÑиализиÑÑÐµÑ Ð»ÐµÐ½Ð¸Ð²ÑÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ Ð¸Ð·Ð¾Ð±Ñажений в Ñказанном конÑекÑÑе. 4 * @param {jQuery|HTMLElement|string} context - облаÑÑÑ, в коÑоÑой иÑем изобÑажениÑ. 5 */ 6 function initLazyLoading(context) { 7 var $context = $(context); 8 var images = $context.find(".lazyload"); 9 10 if ("IntersectionObserver" in window) { 11 var observer = new IntersectionObserver(function (entries, observer) { 12 entries.forEach(function (entry) { 13 if (entry.isIntersecting) { 14 var img = $(entry.target); 15 // ÐагÑÑжаем изобÑажение 16 loadImage(img); 17 // ÐÑекÑаÑаем наблÑдение за ÑÑим ÑлеменÑом 18 observer.unobserve(entry.target); 19 } 20 }); 21 }, { 22 rootMargin: "200px" // ÐагÑÑзка наÑинаеÑÑÑ Ð·Ð° 200px до поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð² облаÑÑи видимоÑÑи 23 }); 24 25 // ÐаблÑдаем за вÑеми найденнÑми изобÑажениÑми 26 images.each(function () { 27 observer.observe(this); 28 }); 29 } else { 30 // Fallback Ð´Ð»Ñ ÑÑаÑÑÑ Ð±ÑаÑзеÑов 31 images.each(function () { 32 var img = $(this); 33 loadImage(img); 34 }); 35 } 36 } 37 38 /** 39 * ФÑнкÑÐ¸Ñ Ð·Ð°Ð³ÑÑзки изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ ÑкÑÑÑÐ¸Ñ ÑкелеÑа. 40 * @param {jQuery} img - ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð·Ð¾Ð±ÑажениÑ. 41 */ 42 function loadImage(img) { 43 var skeleton = img.closest(".product-image, .swiper-slide").find(".skeleton"); 44 var dataSrc = img.attr("data-src"); 45 46 if (!dataSrc || dataSrc.trim() === "") { 47 return; 48 } 49 50 img.attr("src", dataSrc) 51 .on("load", function () { 52 if (skeleton.length > 0) { 53 skeleton.fadeOut(); 54 } 55 img.css({ opacity: 1 }); 56 }) 57 .on("error", function () { 58 if (skeleton.length > 0) { 59 skeleton.replaceWith('<div class="error-placeholder"><img src="/wp-content/themes/miniapp/img/no-image.svg" alt="ÐÐµÑ Ð¸Ð·Ð¾Ð±ÑажениÑ"></div>'); 60 } 61 }); 62 } 63 64 // ÐниÑиализаÑÐ¸Ñ Ð»ÐµÐ½Ð¸Ð²Ð¾Ð¹ загÑÑзки пÑи загÑÑзке ÑÑÑаниÑÑ 65 $(document).ready(function () { 66 initLazyLoading(document); 67 }); 68 69 // ÐеÑеиниÑиализаÑÐ¸Ñ lazyload поÑле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾ÑÐ·Ð¸Ð½Ñ 70 $(document.body).on('updated_cart_totals', function () { 71 initLazyLoading(document); 72 }); 73 74 75 // Ðелаем ÑÑнкÑÐ¸Ñ Ð´Ð¾ÑÑÑпной глобалÑно, ÑÑÐ¾Ð±Ñ ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ бÑло вÑзваÑÑ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ конÑенÑа (напÑимеÑ, поÑле AJAX) 76 window.initLazyLoading = initLazyLoading; 77})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.