inwo-vgl.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. // Verbesserte Popup-Funktionen für externe Anwendungen
  2. // Diese Datei kann in externe Anwendungen eingebunden werden
  3. var popupWin = null;
  4. function forcePostToPopup(url, params) {
  5. console.log("forcePostToPopup aufgerufen mit URL:", url);
  6. console.log("Parameter:", params);
  7. // Popup erstellen oder wiederverwenden
  8. var needNewPopup = true;
  9. if (popupWin) {
  10. try {
  11. // Try to access the closed property - this might fail due to cross-origin restrictions
  12. needNewPopup = popupWin.closed;
  13. console.log("Popup Status - geschlossen:", needNewPopup);
  14. }
  15. catch (e) {
  16. console.log("Cross-origin access to popup window, assuming it's still open:", e);
  17. needNewPopup = false;
  18. }
  19. }
  20. if (needNewPopup) {
  21. console.log("Creating new popup window");
  22. // WICHTIG: Mit about:blank starten für bessere Kompatibilität
  23. popupWin = window.open("about:blank", "vglPopup", "width=1920,height=1000,scrollbars=yes,resizable=yes");
  24. if (!popupWin) {
  25. alert("Popup konnte nicht geöffnet werden. Bitte überprüfen Sie Ihre Popup-Blocker-Einstellungen.");
  26. return;
  27. }
  28. // Minimal-HTML schreiben, damit das Popup einen korrekten Document-Context hat
  29. try {
  30. popupWin.document.open();
  31. popupWin.document.write(`
  32. <!DOCTYPE html>
  33. <html>
  34. <head>
  35. <meta charset="UTF-8">
  36. <title>Lade DIWO Vergleich...</title>
  37. <style>
  38. body {
  39. font-family: Arial, sans-serif;
  40. text-align: center;
  41. padding: 50px;
  42. background: #f5f5f5;
  43. }
  44. .loader {
  45. border: 4px solid #f3f3f3;
  46. border-top: 4px solid #3498db;
  47. border-radius: 50%;
  48. width: 40px;
  49. height: 40px;
  50. animation: spin 2s linear infinite;
  51. margin: 20px auto;
  52. }
  53. @keyframes spin {
  54. 0% { transform: rotate(0deg); }
  55. 100% { transform: rotate(360deg); }
  56. }
  57. </style>
  58. </head>
  59. <body>
  60. <h2>DIWO Vergleich wird geladen...</h2>
  61. <div class="loader"></div>
  62. <p>Bitte warten Sie, die Vergleichsdaten werden übertragen.</p>
  63. </body>
  64. </html>
  65. `);
  66. popupWin.document.close();
  67. }
  68. catch (e) {
  69. console.log("Konnte nicht in Popup schreiben:", e);
  70. }
  71. }
  72. else {
  73. console.log("Reusing existing popup window");
  74. }
  75. // Formular bauen - WICHTIG: Target muss mit Popup-Name übereinstimmen!
  76. var form = document.createElement("form");
  77. form.id = "vglPostForm";
  78. form.method = "post";
  79. form.action = url;
  80. form.target = "vglPopup"; // Muss mit dem Namen des Popups übereinstimmen!
  81. form.style.display = "none"; // Formular unsichtbar machen
  82. // Parameter als Hidden-Fields hinzufügen
  83. for (var key in params) {
  84. if (params.hasOwnProperty(key)) {
  85. var input = document.createElement("input");
  86. input.type = "hidden";
  87. input.name = key;
  88. input.value = params[key] == null ? "" : params[key];
  89. form.appendChild(input);
  90. console.log("Parameter hinzugefügt - " + key + ": " + (params[key] == null ? "(leer)" : params[key]));
  91. }
  92. }
  93. // Formular temporär zum DOM hinzufügen und absenden
  94. document.body.appendChild(form);
  95. console.log("📤 Formular wird abgesendet...");
  96. form.submit();
  97. // Formular wieder entfernen
  98. document.body.removeChild(form);
  99. // Fokus setzen und Popup in den Vordergrund bringen
  100. try {
  101. popupWin.focus();
  102. // Zusätzlicher Versuch nach kurzer Verzögerung
  103. setTimeout(function() {
  104. try {
  105. popupWin.focus();
  106. } catch (e) {
  107. console.log("Konnte Popup nicht fokussieren (verzögert):", e);
  108. }
  109. }, 500);
  110. } catch (e) {
  111. console.log("Konnte Popup nicht fokussieren:", e);
  112. }
  113. console.log("Popup-Übertragung abgeschlossen");
  114. }