Initialize VG-Environment from stable VG-IV baseline
Dieser Commit ist enthalten in:
@@ -0,0 +1,146 @@
|
||||
(function () {
|
||||
|
||||
console.log("VendorGet injected bridge loaded:", window.location.href);
|
||||
|
||||
if (typeof window.__tcfapi !== "function") {
|
||||
console.log("VendorGet: __tcfapi not found");
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("VendorGet: __tcfapi found");
|
||||
|
||||
function emitToContentScript(eventName, payload) {
|
||||
window.dispatchEvent(new CustomEvent("VendorGetFromPage", {
|
||||
detail: {
|
||||
eventName: eventName,
|
||||
payload: payload
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
function cloneSerializable(value, seen) {
|
||||
if (value === undefined) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
||||
return value;
|
||||
}
|
||||
|
||||
if (typeof value === "function" || typeof value === "symbol") {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if (typeof value !== "object") {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const seenValues = seen || new WeakSet();
|
||||
|
||||
if (seenValues.has(value)) {
|
||||
return "[Circular]";
|
||||
}
|
||||
|
||||
seenValues.add(value);
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(function (item) {
|
||||
const clonedItem = cloneSerializable(item, seenValues);
|
||||
return clonedItem === undefined ? null : clonedItem;
|
||||
});
|
||||
}
|
||||
|
||||
if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const result = {};
|
||||
|
||||
Object.keys(value).forEach(function (key) {
|
||||
let propertyValue;
|
||||
|
||||
try {
|
||||
propertyValue = value[key];
|
||||
} catch (error) {
|
||||
return;
|
||||
}
|
||||
|
||||
const clonedValue = cloneSerializable(propertyValue, seenValues);
|
||||
|
||||
if (clonedValue !== undefined) {
|
||||
result[key] = clonedValue;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
window.__tcfapi("ping", 2, function (pingData, pingSuccess) {
|
||||
|
||||
console.log("VendorGet __tcfapi ping:", {
|
||||
success: pingSuccess,
|
||||
data: pingData
|
||||
});
|
||||
|
||||
emitToContentScript("tcf_ping", {
|
||||
success: pingSuccess,
|
||||
data: pingData
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
window.__tcfapi("addEventListener", 2, function (tcData, success) {
|
||||
|
||||
if (!success || !tcData) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("VendorGet raw event:", tcData);
|
||||
|
||||
if (tcData.eventStatus === "useractioncomplete") {
|
||||
|
||||
const capture = {
|
||||
url: window.location.href,
|
||||
origin: window.location.origin,
|
||||
|
||||
timestampUtc: new Date().toISOString(),
|
||||
|
||||
cmpId: tcData.cmpId,
|
||||
cmpVersion: tcData.cmpVersion,
|
||||
|
||||
gdprApplies: tcData.gdprApplies,
|
||||
|
||||
tcfPolicyVersion: tcData.tcfPolicyVersion,
|
||||
vendorListVersion: tcData.vendorListVersion,
|
||||
|
||||
tcString: tcData.tcString,
|
||||
|
||||
eventStatus: tcData.eventStatus,
|
||||
cmpStatus: tcData.cmpStatus,
|
||||
|
||||
isServiceSpecific: tcData.isServiceSpecific,
|
||||
useNonStandardTexts: tcData.useNonStandardTexts,
|
||||
|
||||
publisherCC: tcData.publisherCC,
|
||||
purposeOneTreatment: tcData.purposeOneTreatment,
|
||||
|
||||
purpose: tcData.purpose,
|
||||
vendor: tcData.vendor,
|
||||
|
||||
specialFeatureOptins: tcData.specialFeatureOptins,
|
||||
|
||||
publisher: tcData.publisher,
|
||||
|
||||
addtlConsent: tcData.addtlConsent,
|
||||
|
||||
rawTcData: cloneSerializable(tcData)
|
||||
};
|
||||
|
||||
console.log("VendorGet CONSENT CAPTURE:", capture);
|
||||
|
||||
emitToContentScript("consent_capture", capture);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})();
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren