138 lines
3.8 KiB
JavaScript
138 lines
3.8 KiB
JavaScript
var libJsLeadPlace = {
|
|
_author: "LeadPlace Dvpt",
|
|
_version: "2.0",
|
|
_scriptIframe: "//" + "tag.leadplace.fr" + "/wckr.php",
|
|
_vendorTemelioId: 244,
|
|
SendtoLPbyIframe: function (_param) {
|
|
var _ifr = document.createElement("iframe");
|
|
if (!window.__tcfapi) {
|
|
// find the CMP frame
|
|
var frame = window;
|
|
var cmpFrame;
|
|
var cmpCallbacks = {};
|
|
|
|
while (!cmpFrame) {
|
|
try {
|
|
if (frame.frames["__tcfapiLocator"]) {
|
|
cmpFrame = frame;
|
|
break;
|
|
}
|
|
} catch (e) {}
|
|
if (frame === window.top) {
|
|
break;
|
|
}
|
|
frame = frame.parent;
|
|
}
|
|
|
|
/**
|
|
* Set up a __tcfapi proxy method to do the postMessage and map the callback.
|
|
* From the caller's perspective, this function behaves identically to the
|
|
* CMP API's __tcfapi call
|
|
*/
|
|
|
|
_ifr.__tcfapi = function (cmd, version, callback, arg) {
|
|
if (!cmpFrame) {
|
|
// in this case the CMP is managed by the partner.
|
|
callback(
|
|
{
|
|
msg: "CMP not found",
|
|
isCustomCMP: true,
|
|
},
|
|
false
|
|
);
|
|
return;
|
|
}
|
|
var callId = Math.random() + "";
|
|
var msg = {
|
|
__tcfapiCall: {
|
|
command: cmd,
|
|
parameter: arg,
|
|
version: version,
|
|
callId: callId,
|
|
},
|
|
};
|
|
cmpCallbacks[callId] = callback;
|
|
cmpFrame.postMessage(msg, "*");
|
|
};
|
|
|
|
function postMessageHandler(event) {
|
|
var msgIsString = typeof event.data === "string";
|
|
var json = event.data;
|
|
if (msgIsString) {
|
|
try {
|
|
json = JSON.parse(event.data);
|
|
} catch (e) {}
|
|
}
|
|
|
|
var payload = json.__tcfapiReturn;
|
|
if (payload) {
|
|
if (typeof cmpCallbacks[payload.callId] === "function") {
|
|
cmpCallbacks[payload.callId](payload.returnValue, payload.success);
|
|
cmpCallbacks[payload.callId] = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* when we get the return message, call the stashed callback */
|
|
window.addEventListener("message", postMessageHandler, false);
|
|
} else {
|
|
_ifr.__tcfapi = window.__tcfapi;
|
|
}
|
|
|
|
/* example call of the above __tcfapi wrapper function */
|
|
_ifr.__tcfapi(
|
|
"getTCData",
|
|
2,
|
|
function (tcData, success) {
|
|
var sendTag = false;
|
|
var gdprQs = "";
|
|
// the case of Custom CMP
|
|
if (!success && tcData.isCustomCMP) {
|
|
sendTag = true;
|
|
}
|
|
|
|
// the case of IAB
|
|
if (
|
|
success &&
|
|
tcData.vendor &&
|
|
tcData.vendor.consents[libJsLeadPlace._vendorTemelioId] &&
|
|
tcData.purpose &&
|
|
tcData.purpose.consents[1]
|
|
) {
|
|
// consentData contains the base64-encoded consent string
|
|
var consentData = tcData.tcString;
|
|
|
|
// gdprApplies specifies whether the user is in EU jurisdiction
|
|
var gdprApplies = tcData.gdprApplies ? 1 : 0;
|
|
|
|
// pass these 2 values to all ad / pixel calls
|
|
var gdprQs =
|
|
"gdpr=" + gdprApplies + "&gdpr_consent=" + consentData + "&";
|
|
|
|
sendTag = true;
|
|
}
|
|
|
|
if (sendTag) {
|
|
var refurl = "ref=" + encodeURIComponent(window.location.href) + "&";
|
|
|
|
_ifr.src =
|
|
document.location.protocol +
|
|
libJsLeadPlace._scriptIframe +
|
|
"?" +
|
|
gdprQs +
|
|
refurl +
|
|
_param;
|
|
_ifr.style.width = "0px";
|
|
_ifr.style.height = "0px";
|
|
_ifr.style.border = "0px";
|
|
_ifr.style.display = "none";
|
|
_ifr.style.visibility = "hidden";
|
|
var a = document.getElementsByTagName("head")[0];
|
|
if (a) a.appendChild(_ifr);
|
|
|
|
}
|
|
},
|
|
[libJsLeadPlace._vendorTemelioId]
|
|
);
|
|
}
|
|
}; |