(function(){ var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d"; window.criteo_q = window.criteo_q || []; window.criteo_q.push( { event: "setAccount", account: 103134 }, { event: "setEmail", email: "", hash_method: "none"}, { event: "setSiteType", type: deviceType }, { event: "setZipcode", zipcode: "" }, { event: "viewHome", ecpplugin: "shopify-cg" } ); window.addEventListener('load', function() { // ajax request catching (function(open) { XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { this.addEventListener("readystatechange", function() { if (this.readyState == 4 && this._url.includes("/add.js") && "" != "") { try { $.getJSON("/cart.js", function(data) { var basketData = []; var item; if (!data.items || !data.items.length) return; for (var i = 0; i < data.items.length; i++) { item = data.items[i]; if (item.product_id == "") { basketData.push({ id: item.product_id, price: (typeof(item.price) != "number") ? item.price : (item.price/100), quantity: item.quantity }); } } window.criteo_q.push({ event: "addToCart", ecpplugin: "shopify-cg", product: basketData }); }); } catch (err) { // do nothing } } }, false); open.apply(this, arguments); }; })(XMLHttpRequest.prototype.open); // fetch request catching const crtoMock = window.fetch; window.fetch = function() { return new Promise((resolve, reject) => { crtoMock.apply(this, arguments) .then((response) => { if(response.url.includes("/add.js") && response.type != "cors" && "" != ""){ try { $.getJSON("/cart.js", function(data) { var basketData = []; var item; if (!data.items || !data.items.length) return; for (var i = 0; i < data.items.length; i++) { item = data.items[i]; if (item.product_id == "") { basketData.push({ id: item.product_id, price: (typeof(item.price) != "number") ? item.price : (item.price/100), quantity: item.quantity }); } } window.criteo_q.push({ event: "addToCart", ecpplugin: "shopify-cg", product: basketData }); }); } catch (err) { // do nothing } } resolve(response); }) .catch((error) => { reject(error); }) }); } }, false); })();