Untitled
unknown
plain_text
3 years ago
5.9 kB
7
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...