| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- // Verbesserte Popup-Funktionen für externe Anwendungen
- // Diese Datei kann in externe Anwendungen eingebunden werden
- var popupWin = null;
- function forcePostToPopup(url, params) {
- console.log("forcePostToPopup aufgerufen mit URL:", url);
- console.log("Parameter:", params);
-
- // Popup erstellen oder wiederverwenden
- var needNewPopup = true;
- if (popupWin) {
- try {
- // Try to access the closed property - this might fail due to cross-origin restrictions
- needNewPopup = popupWin.closed;
- console.log("Popup Status - geschlossen:", needNewPopup);
- }
- catch (e) {
- console.log("Cross-origin access to popup window, assuming it's still open:", e);
- needNewPopup = false;
- }
- }
- if (needNewPopup) {
- console.log("Creating new popup window");
- // WICHTIG: Mit about:blank starten für bessere Kompatibilität
- popupWin = window.open("about:blank", "vglPopup", "width=1920,height=1000,scrollbars=yes,resizable=yes");
- if (!popupWin) {
- alert("Popup konnte nicht geöffnet werden. Bitte überprüfen Sie Ihre Popup-Blocker-Einstellungen.");
- return;
- }
- // Minimal-HTML schreiben, damit das Popup einen korrekten Document-Context hat
- try {
- popupWin.document.open();
- popupWin.document.write(`
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>Lade DIWO Vergleich...</title>
- <style>
- body {
- font-family: Arial, sans-serif;
- text-align: center;
- padding: 50px;
- background: #f5f5f5;
- }
- .loader {
- border: 4px solid #f3f3f3;
- border-top: 4px solid #3498db;
- border-radius: 50%;
- width: 40px;
- height: 40px;
- animation: spin 2s linear infinite;
- margin: 20px auto;
- }
- @keyframes spin {
- 0% { transform: rotate(0deg); }
- 100% { transform: rotate(360deg); }
- }
- </style>
- </head>
- <body>
- <h2>DIWO Vergleich wird geladen...</h2>
- <div class="loader"></div>
- <p>Bitte warten Sie, die Vergleichsdaten werden übertragen.</p>
- </body>
- </html>
- `);
- popupWin.document.close();
- }
- catch (e) {
- console.log("Konnte nicht in Popup schreiben:", e);
- }
- }
- else {
- console.log("Reusing existing popup window");
- }
- // Formular bauen - WICHTIG: Target muss mit Popup-Name übereinstimmen!
- var form = document.createElement("form");
- form.id = "vglPostForm";
- form.method = "post";
- form.action = url;
- form.target = "vglPopup"; // Muss mit dem Namen des Popups übereinstimmen!
- form.style.display = "none"; // Formular unsichtbar machen
- // Parameter als Hidden-Fields hinzufügen
- for (var key in params) {
- if (params.hasOwnProperty(key)) {
- var input = document.createElement("input");
- input.type = "hidden";
- input.name = key;
- input.value = params[key] == null ? "" : params[key];
- form.appendChild(input);
- console.log("Parameter hinzugefügt - " + key + ": " + (params[key] == null ? "(leer)" : params[key]));
- }
- }
- // Formular temporär zum DOM hinzufügen und absenden
- document.body.appendChild(form);
-
- console.log("📤 Formular wird abgesendet...");
- form.submit();
-
- // Formular wieder entfernen
- document.body.removeChild(form);
- // Fokus setzen und Popup in den Vordergrund bringen
- try {
- popupWin.focus();
-
- // Zusätzlicher Versuch nach kurzer Verzögerung
- setTimeout(function() {
- try {
- popupWin.focus();
- } catch (e) {
- console.log("Konnte Popup nicht fokussieren (verzögert):", e);
- }
- }, 500);
-
- } catch (e) {
- console.log("Konnte Popup nicht fokussieren:", e);
- }
-
- console.log("Popup-Übertragung abgeschlossen");
- }
|