Untitled
unknown
plain_text
2 years ago
5.9 kB
4
Indexable
<script> (function() { const EXPERIMENT_NO = '7.1'; const VARIANT_NO = '2'; const GOOGLE_ANALYTICS_TRACKING_ID = 'UA-62398555-4'; const LOG_PREFIX = '[CONVERSION] ' + EXPERIMENT_NO + ' -->'; const SELECTOR_PREFIX = 'conversion-' + EXPERIMENT_NO.replace('.', '-'); const STORAGE_PREFIX = 'CONVERSION_' + EXPERIMENT_NO.replace('.', '_'); const DEBUGGING_TOKEN_NAME = 'DEBUGGING'; const DEBUGGING_ENABLED = document.cookie.match( new RegExp('(^| )' + DEBUGGING_TOKEN_NAME + '=ENABLED([^;]*)', 'i') ); const utils = {}; utils.log = (...args) => { DEBUGGING_ENABLED && console.log(LOG_PREFIX, ...args); }; utils.error = (...args) => { DEBUGGING_ENABLED && console.error(LOG_PREFIX, ...args); }; utils.dispatchEvent = (event) => { let stop; const check = () => { if (stop) return; if (!( window.ga instanceof Function && window.ga.getAll instanceof Function )) return requestAnimationFrame(check); stop = true; const properties = window.ga.getAll(); let analytics; if (GOOGLE_ANALYTICS_TRACKING_ID) analytics = properties.find( property => property.get('trackingId') === GOOGLE_ANALYTICS_TRACKING_ID ); analytics = analytics ? analytics : properties[0]; if (analytics) analytics.send( 'event', 'Adobe Target', EXPERIMENT_NO + ' -- ' + VARIANT_NO, event, { nonInteraction: true } ); }; requestAnimationFrame(check); }; utils.waitUntil = (condition, wait = 5000) => { return new Promise((resolve, reject) => { let stop; const timeout = wait && setTimeout(() => { stop = true; reject(); }, wait); const check = () => { if (stop) return; if (!condition()) return requestAnimationFrame(check); clearTimeout(timeout); resolve(condition()); }; requestAnimationFrame(check); }); }; utils.dispatchEvent('experiment shown'); try { let disEle; const init = (() => { utils.log('VARIANT #' + VARIANT_NO + ' RUNNING'); utils .waitUntil(() => document.body, 0) .then(element => element.classList.add(SELECTOR_PREFIX)) .catch((error) => { utils.error(error); }); utils .waitUntil(() => document.querySelector("main.product .product-price > .product-price__detail")) .then(element => { addDiscount(); observePrice(); }) .catch((error) => { utils.error(error); }); })(); const addDiscount = () => { document.querySelectorAll("main.product .product-price > .product-price__detail").forEach(ele => { let wasPrice = ele.querySelector(".product-price__was"); let crrPrice = ele.parentElement.querySelector(".product-price__main"); if (wasPrice) { let wasP = parseFloat(wasPrice.getAttribute("data-was-price")); let crrP = parseFloat(crrPrice.getAttribute("data-product-price")); let discount = (wasP - crrP).toFixed(2); if (!ele.querySelector('.'+SELECTOR_PREFIX+'-discount')) { let egDiscountHTML = '<span class="'+SELECTOR_PREFIX+'-discount">Save £'+discount+'</span>'; ele.insertAdjacentHTML("afterbegin", egDiscountHTML); } // MOVING PERCENTAGE UP TO THE PRICE let cvPr = ele.querySelector('.product-price__detail-discount:not(.'+SELECTOR_PREFIX+'-discount)'); cvPr.innerText = cvPr.innerText.replace("Save ", "-"); let cvTarget = ele.parentElement.querySelector(".product-price__detail-inline"); cvPr.classList.remove('product-price__detail-discount'); cvPr.classList.add(SELECTOR_PREFIX+'-pr-dis'); cvTarget.insertAdjacentElement("beforeend", cvPr); } }); }; const observePrice = () => { var observer = new MutationObserver(function (mutationsList, obs) { addDiscount(); }); observer.observe(disEle, { attributes: true, characterData: true, childList: true, subtree: true, }); }; } catch (error) { utils.error(error); } })(); </script> <style> html body.conversion-7-1 main.product .product-price .product-price__main, html body main.product .product-price__detail-discount:not(.conversion-7-1-pr-dis){ color: #E10022 !important; font-family: ALDISUEDOffice,sans-serif; } html body.conversion-7-1 .conversion-7-1-pr-dis { position: absolute; right: 0; top: 50%; transform: translateY(-50%); background: #e10022; color: #fff !important; border-radius: 5px; padding: 2px 8px; font-weight:700; font-family: ALDISUEDOffice,sans-serif; } html body.conversion-7-1 span.conversion-7-1-discount { color: #E10022 !important; font-family: ALDISUEDOffice,sans-serif; font-size:16px; } html body.conversion-7-1 main.product .product-price__detail-inline { position: relative; } html body.conversion-7-1 main.product .product-details__sticky-atc .conversion-7-1-pr-dis { display: none !important; } </style>
Editor is loading...