Untitled
unknown
plain_text
3 years ago
5.2 kB
11
Indexable
<script>
(function() {
const EXPERIMENT_NO = '7.1';
const VARIANT_NO = '1';
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)
.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 => {
disEle = document.querySelector("main.product .product-price > .product-price__detail");
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 currentPrice = ele.parentElement.querySelector(".product-price__main");
if (wasPrice) {
let wasP = parseFloat(wasPrice.getAttribute("data-was-price"));
let crrP = parseFloat(currentPrice.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);
}
}
});
};
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.conversion-7-1 main.product .product-price .conversion-7-1-discount,
html body.conversion-7-1 main.product .product-price__detail-discount {
color: #E10022 !important;
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-separator {
margin: 0 4px !important;
}
html body.conversion-7-1 .product-price__detail-discount:not(.conversion-7-1-discount), html body.conversion-7-1 span.conversion-7-1-discount + span{
display: none !important;
}
</style>Editor is loading...