Altes Köln

Widget:GOV-Test: Unterschied zwischen den Versionen

Aus Altes Köln
Wechseln zu:Navigation, Suche
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
<!--Test-Widget von Christopher zum Austesten des GOV-Aufrufes (eigentlich für das GenWiki)-->
<!--Test-Widget von Christopher zum Austesten des GOV-Aufrufes (eigentlich für das GenWiki)-->
<h1>Ajax-Variante mit wiki</h1>
<h1>Ajax-Variante mit wiki</h1>
<div id="widget-container">
<div id="widget-container"></div>
    <div id="content">
        <!-- Hier wird der geladene Inhalt eingefügt -->
        <p>Dies ist ein statischer Testinhalt, bevor die Inhalte geladen werden.</p>
    </div>
</div>


<script>
<script>
     (function() {
     (function () {
         const serverBaseURL = "https://gov.genealogy.net";
         const fetchURL = "https://gov.genealogy.net/item/wikihtml/SCHERGJO54EJ";


         fetch('https://gov.genealogy.net/item/wikihtml/SCHERGJO54EJ')
         fetch(fetchURL)
             .then(response => {
             .then(response => {
                 if (!response.ok) {
                 if (!response.ok) {
Zeile 20: Zeile 15:
             })
             })
             .then(html => {
             .then(html => {
                 console.log('Geladener HTML-Inhalt:', html); // Debugging: Lade HTML-Inhalt in die Konsole
                 const widgetContainer = document.getElementById('widget-container');


                 // Temporäres DOM-Element erstellen
                 // Shadow DOM erstellen
                 const tempDiv = document.createElement('div');
                 const shadow = widgetContainer.attachShadow({ mode: 'open' });
                tempDiv.innerHTML = html;


                 // Relativen Links den Server-Base-URL voranstellen
                 // Stile für das Widget im Shadow DOM hinzufügen
                 const links = tempDiv.querySelectorAll('a[href^="/"]');
                 const style = document.createElement('style');
                 links.forEach(link => {
                 style.textContent = `
                    link.href = serverBaseURL + link.getAttribute('href');
                    :host {
                });
                        all: initial; /* Verhindert globale Stile */
                        display: block;
                        max-width: 800px;
                        margin: 20px auto;
                        padding: 10px;
                        border: 1px solid #ccc;
                        background-color: #f9f9f9;
                        overflow: auto;
                    }


                // Bilder-URLs anpassen
                    table {
                const images = tempDiv.querySelectorAll('img[src^="/"]');
                        width: 100%;
                images.forEach(img => {
                        table-layout: fixed; /* Verhindert Überdehnung von Tabellenzellen */
                     img.src = serverBaseURL + img.getAttribute('src');
                        border-collapse: collapse;
                });
                        margin: 10px 0;
                     }


                 // Geladenen Inhalt in den Widget-Container einfügen
                    th, td {
                 const contentDiv = document.getElementById('content');
                        border: 1px solid #ddd;
                 contentDiv.innerHTML = tempDiv.innerHTML;
                        padding: 8px;
                        text-align: left;
                        word-wrap: break-word; /* Zeilenumbruch für lange Wörter */
                    }
 
                    th {
                        background-color: #f2f2f2;
                    }
 
                    ul {
                        padding-left: 20px;
                    }
 
                    object {
                        max-width: 100%;
                        height: auto;
                        display: block;
                        margin: 10px auto;
                    }
 
                    a {
                        color: #007BFF; /* Linkfarbe */
                        text-decoration: none;
                    }
 
                    a:hover {
                        text-decoration: underline;
                    }
                `;
 
                 // Geladenen HTML-Inhalt einfügen
                 const content = document.createElement('div');
                 content.innerHTML = html;
 
                // Stile und Inhalte in das Shadow DOM einfügen
                shadow.appendChild(style);
                shadow.appendChild(content);
             })
             })
             .catch(error => {
             .catch(error => {
                 console.error('Fehler beim Laden des Inhalts:', error);
                 console.error('Fehler beim Laden:', error);
                // Fallback: Zeige eine Fehlermeldung im Widget
                 const widgetContainer = document.getElementById('widget-container');
                 const contentDiv = document.getElementById('content');
                 widgetContainer.textContent = "Fehler: Inhalte konnten nicht geladen werden.";
                 contentDiv.innerHTML = '<p>Fehler: Inhalte konnten nicht geladen werden.</p>';
             });
             });
     })();
     })();
</script>
</script>
<style>
    /* Styling für den Widget-Container */
    #widget-container {
        width: 100%; /* Volle Breite des Widgets */
        max-width: 800px; /* Maximale Breite des Widgets */
        margin: 20px auto; /* Zentriert auf der Seite */
        padding: 10px; /* Abstand innerhalb des Containers */
        border: 1px solid #ccc; /* Rahmen um den Container */
        background-color: #f9f9f9; /* Hintergrundfarbe */
        overflow: auto; /* Begrenzung für Inhalte */
    }
    /* Styling für Tabellen innerhalb des Widgets */
    #widget-container table {
        border-collapse: collapse;
        width: 100%;
    }
    #widget-container td, #widget-container th {
        border: 1px solid #ddd;
        padding: 8px;
    }
    #widget-container th {
        background-color: #f2f2f2;
        text-align: left;
    }
</style>


<h1>Variante: Einfacher iframe mit <!--{$CallType|escape:'url'}--></h1>
<h1>Variante: Einfacher iframe mit <!--{$CallType|escape:'url'}--></h1>

Version vom 21. Januar 2025, 14:15 Uhr

Ajax-Variante mit wiki

<script>

   (function () {
       const fetchURL = "https://gov.genealogy.net/item/wikihtml/SCHERGJO54EJ";
       fetch(fetchURL)
           .then(response => {
               if (!response.ok) {
                   throw new Error(`HTTP-Fehler! Status: ${response.status}`);
               }
               return response.text();
           })
           .then(html => {
               const widgetContainer = document.getElementById('widget-container');
               // Shadow DOM erstellen
               const shadow = widgetContainer.attachShadow({ mode: 'open' });
               // Stile für das Widget im Shadow DOM hinzufügen
               const style = document.createElement('style');
               style.textContent = `
                   :host {
                       all: initial; /* Verhindert globale Stile */
                       display: block;
                       max-width: 800px;
                       margin: 20px auto;
                       padding: 10px;
                       border: 1px solid #ccc;
                       background-color: #f9f9f9;
                       overflow: auto;
                   }
                   table {
                       width: 100%;
                       table-layout: fixed; /* Verhindert Überdehnung von Tabellenzellen */
                       border-collapse: collapse;
                       margin: 10px 0;
                   }
                   th, td {
                       border: 1px solid #ddd;
                       padding: 8px;
                       text-align: left;
                       word-wrap: break-word; /* Zeilenumbruch für lange Wörter */
                   }
                   th {
                       background-color: #f2f2f2;
                   }
                   ul {
                       padding-left: 20px;
                   }
                   object {
                       max-width: 100%;
                       height: auto;
                       display: block;
                       margin: 10px auto;
                   }
                   a {
                       color: #007BFF; /* Linkfarbe */
                       text-decoration: none;
                   }
                   a:hover {
                       text-decoration: underline;
                   }
               `;
               // Geladenen HTML-Inhalt einfügen
               const content = document.createElement('div');
               content.innerHTML = html;
               // Stile und Inhalte in das Shadow DOM einfügen
               shadow.appendChild(style);
               shadow.appendChild(content);
           })
           .catch(error => {
               console.error('Fehler beim Laden:', error);
               const widgetContainer = document.getElementById('widget-container');
               widgetContainer.textContent = "Fehler: Inhalte konnten nicht geladen werden.";
           });
   })();

</script>

Variante: Einfacher iframe mit

 

Variante: responsiv mit

<style>

   body {
     margin: 0;
     padding: 0;
     font-family: Arial, sans-serif;
   }
   .iframe-container {
     width: 100%; /* Container hat immer die volle Breite des Viewports */
     position: relative; /* Wichtig für absolute Positionierung */
     padding-top: 56.25%; /* Seitenverhältnis 16:9 */
  
   }
   iframe {
     position: absolute;
     top: 0;
     left: 0;
     width: 100vw; /* Breite des Viewports */
     height: calc(100vw * 0.5625); /* Höhe proportional zur Breite (16:9) */
     transform-origin: top left; /* Skalierung startet oben links */
   }
   /* Media Queries für kleinere Bildschirme */
   @media (max-width: 768px) {
     iframe {
       transform: scale(0.9); /* Skaliere den iframe-Inhalt */
     }
   }
   @media (max-width: 480px) {
     iframe {
       transform: scale(0.8); /* Weitere Skalierung für kleine Geräte */
     }
   }
 </style>
 





Cookies helfen uns bei der Bereitstellung von Altes Köln. Durch die Nutzung von Altes Köln erklärst du dich damit einverstanden, dass wir Cookies speichern.