// Überprüfen, ob jQuery bereits im DOM vorhanden ist if (typeof jQuery === 'undefined') { // jQuery ist nicht vorhanden, also laden wir es dynamisch var script = document.createElement('script'); script.src = 'https://code.jquery.com/jquery-3.6.0.min.js'; // Hier können Sie die gewünschte jQuery-Version und URL angeben script.onload = function() { // Der jQuery-Code hier wird ausgeführt, sobald jQuery vollständig geladen ist console.log('jQuery wurde geladen!'); // Hier können Sie Ihren eigenen jQuery-Code hinzufügen, der von jQuery abhängig ist }; document.head.appendChild(script); } else { // jQuery ist bereits im DOM vorhanden, Sie können Ihren jQuery-Code direkt hier hinzufügen console.log('jQuery ist bereits im DOM vorhanden!'); // Hier können Sie Ihren eigenen jQuery-Code hinzufügen, der von jQuery abhängig ist } document.addEventListener("DOMContentLoaded", function() { // Die URL des Browsers holen var currentUrl = window.location.href; var urlParams; // Die URL zum PHP-Skript, das Daten zurückgibt var apiUrl = "https://langmeierukraine.abusiness.net/abusinesspay/createwk?currency=uah&products=LB12VFXMSP&amount=1&customerguid=&promo=&utm_source=&utm_medium=onlineshop&lang=uk"; // apiUrl mit der aktuellen URL des Browsers kombinieren apiUrl = apiUrl + "&browserurl=" + encodeURIComponent(currentUrl); // Das Element aus dem DOM auswählen var abusinesspayElement = document.querySelector("abusinesspay"); // Extrahiere den wk_guid-Parameter aus der Browser-URL urlParams = new URLSearchParams(window.location.search); var wk_guid = urlParams.get('wk_guid'); // var paymentmethod = urlParams.get('paymentmethod'); // // var step_address = urlParams.get('step_address'); // var param_step_address = ""; // if(step_address !== null) param_step_address = "&step_address"; // // var step_payment = urlParams.get('step_payment'); // var param_step_payment = ""; // if(step_payment !== null) param_step_payment = "&step_payment"; /** Query-String Präparieren */ var queryString = window.location.search; // Erstelle ein URLSearchParams-Objekt aus dem Query-String urlParams = new URLSearchParams(queryString); // Überprüfe, ob der Parameter wk_guid existiert var blnParamChange = false; //Init if (urlParams.has('wk_guid')) { // Entferne den Parameter wk_guid aus dem URLSearchParams-Objekt urlParams.delete('wk_guid'); blnParamChange = true; } if(blnParamChange == true) { // Aktualisiere den Query-String queryString = urlParams.toString(); } // Entfernen des Fragezeichens am Anfang des Query-Strings if (queryString.charAt(0) === '?') { queryString = queryString.substring(1); } // Füge ein &-Zeichen am Anfang des Query-Strings hinzu, falls nicht vorhanden if (queryString.charAt(0) !== '&') { queryString = '&' + queryString; } function setHTML_abusinesspay(data) { var blnExecuted = false; // Erstelle einen MutationObserver, um Änderungen im DOM zu überwachen var observer = new MutationObserver(function(mutationsList) { // Prüfe, ob das abusinesspay-Element hinzugefügt wurde if (mutationsList[0].addedNodes.length > 0) { // Das abusinesspay-Element wurde hinzugefügt, führe hier deinen Code aus // ... if(blnExecuted == true) return; //Bereits einmal ausgeführt. blnExecuted = true; // Hier kannst du sicher sein, dass das abusinesspay-Element vollständig geladen ist // Sammle alle externen Skript-URLs in einem Array var externalScriptUrls = []; $('abusinesspay script[src]').each(function() { externalScriptUrls.push($(this).attr('src')); }); // Zähler für geladene externe Skripte var loadedExternalScriptsCount = 0; if (externalScriptUrls.length > 0) { // Wenn externe Skript-URLs vorhanden sind, lade und führe sie aus externalScriptUrls.forEach(function(scriptUrl) { $.getScript(scriptUrl, function() { loadedExternalScriptsCount++; // Prüfe, ob alle externen Skripte geladen wurden if (loadedExternalScriptsCount === externalScriptUrls.length) { // Alle externen Skripte wurden geladen, jetzt führe die Inline-Skripte aus $('abusinesspay script:not([src])').each(function() { try { // Führe das Inline-Skript aus eval($(this).text()); // Oder verwende sicherere Methoden für die Ausführung console.log('Inline-Skript wurde ausgeführt:', $(this).text()); } catch (error) { console.error('Fehler beim Ausführen des Inline-Skripts:', error); } }); } // Logik für das geladene Skript console.log('Externes Skript wurde geladen und ist einsatzbereit:', scriptUrl); }); }); } else { // Wenn keine externen Skript-URLs vorhanden sind, führe sofort die Inline-Skripte aus $('abusinesspay script:not([src])').each(function() { try { // Führe das Inline-Skript aus eval($(this).text()); // Oder verwende sicherere Methoden für die Ausführung console.log('Inline-Skript wurde ausgeführt:', $(this).text()); } catch (error) { console.error('Fehler beim Ausführen des Inline-Skripts:', error); } }); } } }); // Konfiguration für den MutationObserver var observerConfig = { childList: true, // Überwache Änderungen an der Liste der Kinder des Zielknotens }; // Starte den MutationObserver und überwache das abusinesspay-Element observer.observe(abusinesspayElement, observerConfig); abusinesspayElement.innerHTML = data; } function abucheckout_do(wk_guid) { //var checkoutURL = "https://langmeierukraine.abusiness.net/abusinesspay/checkout?template=&wk_guid=" + wk_guid + "&paymentmethod=" + paymentmethod + param_step_address + param_step_payment; var checkoutURL = "https://langmeierukraine.abusiness.net/abusinesspay/checkout?template=&lang=uk&wk_guid=" + wk_guid + queryString; fetch(checkoutURL) .then(function(response) { // Daten ins Element einfügen var data = response.text(); return data; }) .then(function(data) { var inputString = data; // Überprüfe, ob der String mit "fetch:" beginnt if (inputString.startsWith("fetch:")) { // Weiterleiten // ============ // Extrahiere die URL, indem du den Teil des Strings nach "fetch:" nimmst // Finde die Position des ersten "|"-Zeichens nach "fetch:" var colonIndex = inputString.indexOf("|", 6); // Starte die Suche ab der Position 6 // Extrahiere die URL bis zum ersten "|"-Zeichen, falls vorhanden, sonst extrahiere den Rest des Strings var extractedUrl = colonIndex !== -1 ? inputString.slice(6, colonIndex) : inputString.slice(6); console.log('Extrahierte URL:', extractedUrl); location.href = extractedUrl; } else { //HTML anzeigen //============= setHTML_abusinesspay(data); } }) .catch(function(error) { console.error("Fehler beim Laden der Daten: ", error); }); } // Überprüfe, ob wk_guid vorhanden ist if (wk_guid) { // Der wk_guid-Parameter ist in der URL vorhanden abucheckout_do(wk_guid); } else { // Der wk_guid-Parameter ist nicht in der URL vorhanden, führe die fetch-Anfrage aus fetch(apiUrl) .then(function(response) { return response.text(); }) .then(function(data) { abucheckout_do(data); }) .catch(function(error) { console.error("Fehler beim Laden der Daten: ", error); }); } });