110 lines
3.4 KiB
JavaScript
110 lines
3.4 KiB
JavaScript
// inject-listener.js
|
|
|
|
// Konsolen-Ausgaben für Debugging aktivieren oder deaktivieren
|
|
const debugEnabled = true;
|
|
const debugLog = (...args) => {
|
|
if (debugEnabled) {
|
|
console.log(...args);
|
|
}
|
|
};
|
|
debugLog('Injected listener loaded');
|
|
|
|
// Funktion, um Nachrichten an das globale Fenster zu senden
|
|
function sendTPmsg(o) {
|
|
window.postMessage(o, '*');
|
|
}
|
|
|
|
// Funktion, um __tpt-Details zu extrahieren und zurückzugeben
|
|
function getTPDetails() {
|
|
return window.__tpt ? JSON.parse(JSON.stringify(window.__tpt)) : {};
|
|
}
|
|
|
|
// Überprüfung des __tpt Objekts und Versendung des Ergebnisses
|
|
function checkTPT() {
|
|
const tpDetails = getTPDetails();
|
|
sendTPmsg({ type: 'CHECK_TPT_RESULT', hasTPT: !!tpDetails.cid, tpobj: tpDetails });
|
|
}
|
|
|
|
// Proxy Handler zur Überwachung von Änderungen
|
|
const handler = {
|
|
set(target, property, value) {
|
|
target[property] = value;
|
|
debugLog(`Property ${property} changed to`, value);
|
|
if (property === 'cid') {
|
|
checkTPT();
|
|
}
|
|
return true;
|
|
},
|
|
get(target, property) {
|
|
return target[property];
|
|
}
|
|
};
|
|
|
|
// Initialisierung des Proxies für das __tpt Objekt
|
|
if (window.__tpt) {
|
|
window.__tpt = new Proxy(window.__tpt, handler);
|
|
} else {
|
|
Object.defineProperty(window, '__tpt', {
|
|
set(value) {
|
|
if (value && typeof value === 'object') {
|
|
value = new Proxy(value, handler);
|
|
}
|
|
Object.defineProperty(this, '__tpt', { value, writable: true, configurable: true, enumerable: true });
|
|
checkTPT();
|
|
},
|
|
configurable: true,
|
|
enumerable: true
|
|
});
|
|
}
|
|
|
|
window.addEventListener('message', function(event) {
|
|
if (!event.data || !event.data.type || !event.data.details) return;
|
|
//console.log('TRACKING_PROXY_REQUEST message 1', event.data);
|
|
if (event.data.type === 'TRACKING_PROXY_REDIRECT') {
|
|
//console.log('TRACKING_PROXY_REQUEST message 2', event);
|
|
const eventData = event.data.details.eventData;
|
|
const metaData = event.data.details.metaData;
|
|
if (eventData.cid && window.__tpt && eventData.cid === window.__tpt.cid) {
|
|
//console.log('Tracking Proxy Event detected:', event);
|
|
window.postMessage({ type: 'TRACKING_PROXY_RESPONSE', details: { eventData:eventData, metaData:metaData } }, '*');
|
|
} else {
|
|
//console.log('No matching cid found in request body', details);
|
|
}
|
|
}
|
|
}, false);
|
|
|
|
// Timeout zum Beenden des Listeners, wenn __tpt nicht innerhalb von 10 Sekunden erscheint
|
|
setTimeout(() => {
|
|
if (!window.__tpt || !window.__tpt.cid) {
|
|
debugLog('Kein __tpt Objekt gefunden oder keine CID nach 10 Sekunden.');
|
|
window.removeEventListener('message', this);
|
|
}
|
|
}, 10000);
|
|
|
|
|
|
/*
|
|
(function() {
|
|
let tpid = '';
|
|
//console.log("inject.js loaded");
|
|
function checkTPT() {
|
|
if (!window.__tpt) return;
|
|
let tpobj = JSON.parse(JSON.stringify(window.__tpt));
|
|
console.log('checkTPT result:', tpobj);
|
|
if (!tpobj.cid) return;
|
|
window.postMessage({ type: 'CHECK_TPT_RESULT', tpobj:tpobj }, '*');
|
|
}
|
|
// Überprüfe sofort
|
|
checkTPT();
|
|
// Wiederhole die Überprüfung nach einer kurzen Verzögerung, um sicherzustellen, dass das Objekt geladen ist
|
|
const observer = new MutationObserver((mutations, observer) => {
|
|
if (window.__tpt && window.__tpt.cid) {
|
|
//console.log('TP is now available');
|
|
checkTPT();
|
|
observer.disconnect();
|
|
}
|
|
});
|
|
// Starten des MutationObserver
|
|
if (!window.__tpt && !window.__tpt.cid) observer.observe(document.documentElement, { childList: true, subtree: true });
|
|
//console.log('injected listener executed');
|
|
})();
|
|
*/ |