Widget:GOV
Zur Navigation springen
Zur Suche springen
<noscript>
⚠ JavaScript wird benötigt, um diese Inhalte anzuzeigen.
</noscript>
???? Lade GOV-Daten... Falls nichts erscheint, ist JavaScript deaktiviert.
Um das GOV-Objekt direkt im GOV aufzurufen, <a href="https://gov.genealogy.net/item/show/" target="_blank">klicken Sie hier</a>
<script>
(function () {
const govId = "";
const checkURL = `https://gov.genealogy.net/api/checkObjectId?itemId=${govId}`;
const fetchURL = `https://gov.genealogy.net/item/wikihtml/${govId}`;
const baseURL = "https://gov.genealogy.net";
const containerId = `widget-container-${govId}`;
const contentId = `widget-content-${govId}`;
const warningId = `js-warning-${govId}`;
const headerId = `gov-header-${govId}`;
const widgetContainer = document.getElementById(containerId);
const contentContainer = document.getElementById(contentId);
const jsWarning = document.getElementById(warningId);
const govHeader = document.getElementById(headerId);
if (!widgetContainer || !contentContainer || !govHeader) {
console.error("Fehler: Container für GOV-ID nicht gefunden:", govId);
return;
}
// Entfernt den Ladehinweis, wenn JavaScript aktiv ist
if (jsWarning) jsWarning.style.display = "none";
// GOV-ID-Prüfung vor dem Laden der Daten
let govIdNew = null; // Globale Variable für neue GOV-ID
fetch(checkURL)
.then(response => {
if (response.status === 200) {
return response.text(); // GOV-ID ist gültig → Weiter mit Hauptabfrage
} else if (response.status === 301) {
return response.text().then(body => {
govIdNew = body.trim(); // Speichert die neue GOV-ID
console.debug(`Check-Response Body:`, govIdNew);
// **Sicherstellen, dass der Header aktualisiert wird**
if (govHeader) {
govHeader.innerHTML = `Das GOV-Objekt ${govId} existiert nicht mehr. Es wurde durch ${govIdNew} ersetzt.
<a href="https://gov.genealogy.net/item/show/${govId}" target="_blank">
klicken Sie hier</a>, um Näheres zu erfahren.`;
}
// **Statt fetch() wird nur der Hinweis ausgegeben**
widgetContainer.innerHTML += `
Die GOV-ID ${govId} ist nicht mehr gültig und wurde durch ${govIdNew} ersetzt.
`;
throw new Error("GOV-ID ersetzt");
});
} else if (response.status === 302) {
// **Sicherstellen, dass der Header aktualisiert wird**
if (govHeader) {
govHeader.innerHTML = `Das GOV-Objekt ${govId} existiert nicht mehr.
<a href="https://gov.genealogy.net/item/show/${govId}" target="_blank">
klicken Sie hier</a>, um Näheres zu erfahren.`;
}
// **Statt fetch() wird nur der Hinweis ausgegeben**
widgetContainer.innerHTML += `
Die GOV-ID ${govId} ist nicht mehr gültig und wurde durch eine andere ersetzt.
`;
throw new Error("GOV-ID ersetzt");
} else if (response.status === 404) {
widgetContainer.innerHTML = `
${govId} ist keine gültige GOV-ID!
`;
throw new Error("GOV-ID nicht gültig");
} else {
throw new Error(`Unerwarteter Status: ${response.status}`);
}
})
.then(() => {
// Falls die GOV-ID gültig ist oder ersetzt wurde, lade die Daten mit der neuen GOV-ID (falls vorhanden)
const fetchTarget = govIdNew || govId;
return fetch(`https://gov.genealogy.net/item/wikihtml/${fetchTarget}`);
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP-Fehler! Status: ${response.status}`);
}
return response.text();
})
.then(html => {
// Shadow DOM erstellen
const shadow = contentContainer.attachShadow({ mode: 'open' });
// Stile für das Widget im Shadow DOM hinzufügen
const style = document.createElement('style');
style.textContent = `
:host {
all: initial;
display: block;
max-width: 1200px;
margin: 20px auto;
padding: 0;
border: none;
background-color: #fff;
overflow: auto;
font-family: Arial, sans-serif;
font-size: 16px;
}
table {
width: 100%;
table-layout: auto;
border-collapse: collapse;
margin: 10px 0;
border: 1px solid #ccc;
}
th, td {
border: 1px solid #ddd;
padding: 10px;
text-align: left;
word-wrap: break-word;
}
th {
background-color: #f2f2f2;
}
td:first-child {
width: 1%;
white-space: nowrap;
}
ul {
padding-left: 20px;
margin: 10px 0;
}
object {
max-width: 100%;
width: 100%;
height: 500;
display: block;
margin: 0;
}
.map-container {
text-align: left;
}
a {
color: #007BFF;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
`;
// Geladenen HTML-Inhalt einfügen
const content = document.createElement('div');
content.innerHTML = html;
// 1) Passe width und height in <object> an
const objects = content.querySelectorAll('object[data^="https://www.genealogy.net/viewer-js/"]');
objects.forEach(obj => {
obj.setAttribute('width', '100%');
obj.setAttribute('height', '500');
});
// 2) Passe <a> undfür den relationshipGraph an const imageLinks = content.querySelectorAll('a[href*="relationshipGraph"]'); imageLinks.forEach(link => { const originalHref = link.getAttribute('href'); link.setAttribute('href', baseURL + originalHref);
const img = link.querySelector('img');
if (img) {
const originalSrc = img.getAttribute('src');
img.setAttribute('src', baseURL + originalSrc + "?full-size=1");
img.setAttribute('width', '80%');
}
});
// 3) Füge Base-URL zu allen relativen <a> hinzu
const allLinks = content.querySelectorAll('a[href^="/"]');
allLinks.forEach(link => {
const originalHref = link.getAttribute('href');
link.setAttribute('href', baseURL + originalHref);
});
// 4) Füge Base-URL zu allen relativenhinzu const allImages = content.querySelectorAll('img[src^="/"]'); allImages.forEach(img => { const originalSrc = img.getAttribute('src'); img.setAttribute('src', baseURL + originalSrc); });
// Stile und Inhalte in das Shadow DOM einfügen
shadow.appendChild(style);
shadow.appendChild(content);
})
.catch(error => {
console.error('Fehler beim Laden:', error);
});
})();
</script>