Widget:GOV-Test: Unterschied zwischen den Versionen
Aus Altes Köln
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 4: | Zeile 4: | ||
<script> | <script> | ||
// Festgelegter Servername | |||
const serverBaseURL = "https://gov.genealogy.net"; | const serverBaseURL = "https://gov.genealogy.net"; | ||
fetch('https://gov.genealogy.net/item/wikihtml/SCHERGJO54EJ') | fetch('https://gov.genealogy.net/item/wikihtml/SCHERGJO54EJ') | ||
.then(response => response.text()) | |||
.then(html => { | .then(html => { | ||
// Temporäres DOM-Element erstellen, um den HTML-Fragmentinhalt zu manipulieren | |||
const tempDiv = document.createElement('div'); | const tempDiv = document.createElement('div'); | ||
tempDiv.innerHTML = html; | tempDiv.innerHTML = html; | ||
// | // Alle Links (`<a>`-Tags) anpassen | ||
const links = tempDiv.querySelectorAll('a[href^="/"]'); | const links = tempDiv.querySelectorAll('a[href^="/"]'); // Selektiert Links mit relativen Pfaden | ||
links.forEach(link => { | links.forEach(link => { | ||
link.href = serverBaseURL + link.getAttribute('href'); | link.href = serverBaseURL + link.getAttribute('href'); | ||
}); | }); | ||
const images = tempDiv.querySelectorAll('img[src^="/"]'); | |||
// Alle Bilder (`<img>`-Tags) anpassen | |||
const images = tempDiv.querySelectorAll('img[src^="/"]'); // Selektiert Bilder mit relativen Pfaden | |||
images.forEach(img => { | images.forEach(img => { | ||
img.src = serverBaseURL + img.getAttribute('src'); | img.src = serverBaseURL + img.getAttribute('src'); | ||
}); | }); | ||
// | // Manipulierten Inhalt in die Seite einfügen | ||
const | document.getElementById('content').innerHTML = tempDiv.innerHTML; | ||
if ( | |||
// iViewer-Lösung für bestimmte Bilder implementieren | |||
const relationshipImage = tempDiv.querySelector('a[href*="relationshipGraph"] img'); | |||
if (relationshipImage) { | |||
// Wrapper für iViewer erstellen | |||
const wrapper = document.createElement('div'); | const wrapper = document.createElement('div'); | ||
wrapper.className = ' | wrapper.id = 'viewer'; // iViewer erwartet eine ID oder Klasse | ||
wrapper.className = 'viewer'; | |||
wrapper.appendChild( | |||
// Bild aus dem `<a>`-Tag entfernen und in den Wrapper einfügen | |||
relationshipImage.parentNode.replaceWith(wrapper); | |||
wrapper.appendChild(relationshipImage); | |||
// | // iViewer initialisieren | ||
$('#viewer').iviewer({ | |||
src: relationshipImage.src, | |||
zoom: 'fit', | |||
zoom_base: 100, | |||
zoom_max: 800, | |||
zoom_min: 25, | |||
ui_disabled: false, | |||
}); | |||
} | } | ||
document. | // Beispiel für Styling | ||
const table = document.querySelector('#content table'); | |||
if (table) { | |||
table.style.width = '100%'; | |||
table.style.fontFamily = 'Arial, sans-serif'; | |||
} | |||
}) | }) | ||
.catch(error => console.error('Error loading content:', error)); | .catch(error => console.error('Error loading content:', error)); | ||
</script> | |||
<!-- iViewer Styles und Skripte --> | |||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/iviewer/0.7.11/jquery.iviewer.min.css"> | |||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script> | |||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"></script> | |||
<script src="https://cdnjs.cloudflare.com/ajax/libs/iviewer/0.7.11/jquery.iviewer.min.js"></script> | |||
</script> | |||
<style> | <style> | ||
/* | /* Styling für den Viewer */ | ||
. | .viewer { | ||
width: 100%; | |||
height: 500px; | |||
position: relative; | position: relative; | ||
margin: auto; | |||
border: 1px solid #ccc; | |||
} | } | ||
</style> | </style> | ||
<h1>Variante: Einfacher iframe mit <!--{$CallType|escape:'url'}--></h1> | <h1>Variante: Einfacher iframe mit <!--{$CallType|escape:'url'}--></h1> | ||
Version vom 19. Januar 2025, 22:42 Uhr
Ajax-Variante mit wiki
<script>
// Festgelegter Servername const serverBaseURL = "https://gov.genealogy.net";
fetch('https://gov.genealogy.net/item/wikihtml/SCHERGJO54EJ')
.then(response => response.text())
.then(html => {
// Temporäres DOM-Element erstellen, um den HTML-Fragmentinhalt zu manipulieren
const tempDiv = document.createElement('div');
tempDiv.innerHTML = html;
// Alle Links (`<a>`-Tags) anpassen
const links = tempDiv.querySelectorAll('a[href^="/"]'); // Selektiert Links mit relativen Pfaden
links.forEach(link => {
link.href = serverBaseURL + link.getAttribute('href');
});
// Alle Bilder (`<img>`-Tags) anpassen
const images = tempDiv.querySelectorAll('img[src^="/"]'); // Selektiert Bilder mit relativen Pfaden
images.forEach(img => {
img.src = serverBaseURL + img.getAttribute('src');
});
// Manipulierten Inhalt in die Seite einfügen
document.getElementById('content').innerHTML = tempDiv.innerHTML;
// iViewer-Lösung für bestimmte Bilder implementieren
const relationshipImage = tempDiv.querySelector('a[href*="relationshipGraph"] img');
if (relationshipImage) {
// Wrapper für iViewer erstellen
const wrapper = document.createElement('div');
wrapper.id = 'viewer'; // iViewer erwartet eine ID oder Klasse
wrapper.className = 'viewer';
// Bild aus dem `<a>`-Tag entfernen und in den Wrapper einfügen
relationshipImage.parentNode.replaceWith(wrapper);
wrapper.appendChild(relationshipImage);
// iViewer initialisieren
$('#viewer').iviewer({
src: relationshipImage.src,
zoom: 'fit',
zoom_base: 100,
zoom_max: 800,
zoom_min: 25,
ui_disabled: false,
});
}
// Beispiel für Styling
const table = document.querySelector('#content table');
if (table) {
table.style.width = '100%';
table.style.fontFamily = 'Arial, sans-serif';
}
})
.catch(error => console.error('Error loading content:', error));
</script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/iviewer/0.7.11/jquery.iviewer.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/iviewer/0.7.11/jquery.iviewer.min.js"></script>
<style>
/* Styling für den Viewer */
.viewer {
width: 100%;
height: 500px;
position: relative;
margin: auto;
border: 1px solid #ccc;
}
</style>
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>
