Untitled
unknown
plain_text
3 years ago
5.2 kB
12
Indexable
(function () {
try {
/* main variables */
var debug = 0;
var variation_name = "";
var $;
function waitForElement(selector, trigger, delayInterval, delayTimeout) {
var interval = setInterval(function () {
if (
document &&
document.querySelector(selector) &&
document.querySelectorAll(selector).length > 0
) {
clearInterval(interval);
trigger();
}
}, delayInterval);
setTimeout(function () {
clearInterval(interval);
}, delayTimeout);
}
let onload = true;
const changeCost = () => {
if (window.location.href.indexOf('https://www.yankeecandle.com/checkout?stage') !== -1) {
waitForElement('html body .shipping-method-list >div:has(input:checked),.grand-total .grand-total-sum', function () {
let grandTotal = document.querySelector(".grand-total .grand-total-sum");
if (grandTotal) {
let grandTotalValue = +grandTotal.innerText.replace("$", "");
let eg3dayEl = document.querySelector('.shipping-method-list input[value="FXG"]');
if (eg3dayEl) {
if (onload) {
eg3dayEl.click();
onload = false;
}
if (grandTotalValue < 50) {
eg3dayEl.parentElement.nextElementSibling.innerText = "$5.99";
} else if (grandTotalValue >= 50) {
eg3dayEl.parentElement.nextElementSibling.innerText = "FREE";
}
}
}
}, 50, 15000);
}
}
const addParam = () => {
waitForElement('a[href="https://www.yankeecandle.com/cart"]', function () {
document.querySelectorAll('a[href="https://www.yankeecandle.com/cart"]').forEach(mCrt => {
if (mCrt.href.indexOf("src=1D0CA6R") == -1) {
mCrt.href = mCrt.href + "?src=1D0CA6R";
}
});
}, 1000, 15000);
};
function listener() {
/* These are the modifications: */
window.addEventListener("locationchange", function () {
waitForElement('.shipping-method-list input[value="FXG"]', changeCost, 50, 15000);
});
history.pushState = ((f) =>
function pushState() {
var ret = f.apply(this, arguments);
window.dispatchEvent(new Event("pushstate"));
window.dispatchEvent(new Event("locationchange"));
return ret;
})(history.pushState);
history.replaceState = ((f) =>
function replaceState() {
var ret = f.apply(this, arguments);
window.dispatchEvent(new Event("replacestate"));
window.dispatchEvent(new Event("locationchange"));
return ret;
})(history.replaceState);
window.addEventListener("popstate", () => {
window.dispatchEvent(new Event("locationchange"));
});
}
const send = XMLHttpRequest.prototype.send
XMLHttpRequest.prototype.send = function () {
this.addEventListener('load', function () {
if (this.responseURL.indexOf("/CheckoutShippingServices-SelectShippingMethod") != -1 || this.responseURL.indexOf("/Cart-AddCoupon") != -1 || this.responseURL.indexOf("/CheckoutShippingServices-UpdateShippingMethodsList") != -1 || this.responseURL.indexOf("/Cart-RemoveCouponLineItem") != -1) {
waitForElement('.shipping-method-list input[value="FXG"]', changeCost, 50, 15000);
}
if ((this.responseURL.indexOf("Cart-AddProduct") != -1) || (this.responseURL.indexOf("Cart-MiniCartShow")) || (this.responseURL.indexOf("Cart-RemoveProductLineItem")) || (this.responseURL.indexOf("Cart-UpdateQuantity"))) {
waitForElement('.minicart .sub-total', initHref, 50, 15000);
}
})
return send.apply(this, arguments)
}
const checkForParam = () => {
fetch("https://www.yankeecandle.com/cart").then(res => res.text()).then(data => {
const el = document.createElement("div");
el.innerHTML = data;
const grandTotal = el.querySelector(".grand-total .grand-total-sum");
if (grandTotal) {
let grandTotalValue = +grandTotal.innerText.replace("$", "");
if (grandTotalValue >= 50) {
console.log("hello param can be added");
addParam();
}
}
})
}
const initHref = () => {
var subtotal = document.querySelector('.minicart .sub-total');
if (subtotal) {
let price = +document.querySelector('.minicart .sub-total').innerText.replace("Subtotal: ", "").replace("$", "");
if (price > 50) {
if (document.querySelector('.minicart a.go-to-cart')) {
document.querySelector('.minicart a.go-to-cart').href = 'https://www.yankeecandle.com/cart?src=1D0CA6R';
document.querySelector('.minicart a.minicart-link').href = 'https://www.yankeecandle.com/cart?src=1D0CA6R';
}
}
}
}
/* Initialize variation */
waitForElement('.shipping-method-list input[value="FXG"]', changeCost, 50, 15000);
listener();
waitForElement("html body", checkForParam, 50, 15000);
} catch (e) {
if (debug) console.log(e, "error in Test" + variation_name);
}
})();Editor is loading...