Slate 3 Rack

X
document.addEventListener('DOMContentLoaded', function() { function stripSizeSuffix(url) { if (!url) return url; // Removes patterns like -450x250, -600x400, -1024x768, etc. return url.replace(/-(\d+)x(\d+)(?=\.(png|jpg|jpeg|gif|webp))/gi, ''); }function processImages() { // Process all elements document.querySelectorAll('img').forEach(img => { if (img.src) { img.src = stripSizeSuffix(img.src); } if (img.srcset) { img.srcset = img.srcset.replace(/https?:\/\/[^\s,]+-(\d+)x(\d+)(?=\.(png|jpg|jpeg|gif|webp))/gi, match => stripSizeSuffix(match)); } // Also handle data attributes (common in lazy loading) if (img.dataset.src) img.dataset.src = stripSizeSuffix(img.dataset.src); if (img.dataset.srcset) img.dataset.srcset = stripSizeSuffix(img.dataset.srcset); });// Also fix any background images in inline styles document.querySelectorAll('[style*="url("]').forEach(el => { let style = el.getAttribute('style'); if (style) { const newStyle = style.replace(/url\(['"]?(https?:\/\/[^\s'")]+)-(\d+)x(\d+)(?=\.(png|jpg|jpeg|gif|webp))['"]?\)/gi, (match, p1) => `url(${stripSizeSuffix(p1)})`); if (newStyle !== style) { el.setAttribute('style', newStyle); } } }); }// Run immediately processImages();// Re-run after WooCommerce/AJAX updates (important for product filters, infinite scroll, etc.) const observer = new MutationObserver(processImages); observer.observe(document.body, { childList: true, subtree: true }); });