Widget:GOV-Test
Aus Altes Köln
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: 1000px; /* Erweitere die Breite */
margin: 20px auto;
padding: 15px;
border: 1px solid #ccc;
background-color: #f9f9f9;
overflow: auto;
font-family: Arial, sans-serif; /* Setze Schriftart auf Arial */
}
table {
width: 100%;
table-layout: fixed; /* Verhindert Überdehnung */
border-collapse: collapse; /* Entfernt doppelte Rahmenlinien */
margin: 10px 0;
}
th, td {
border: 1px solid #ddd; /* Einfache Rahmenlinie */
padding: 10px;
text-align: left;
word-wrap: break-word; /* Zeilenumbruch für lange Wörter */
font-family: Arial, sans-serif; /* Schriftart innerhalb der Tabelle */
}
th {
background-color: #f2f2f2;
}
ul {
padding-left: 20px;
margin: 10px 0;
}
object {
max-width: 100%; /* Skaliere Karten auf Containerbreite */
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>
