Das kannst Du erreichen, indem Du zunächst nur die erste ansprichst und bei deren iFrame zusätzlich einen Eventhandler für "error" registrierst. Triggert dieser, weil sie nicht verfügbar ist, setzt Du das src-Attribut für die zweite und machst dort das selbe mit den Eventhandlern. Triggert auch dort der Eventhandler, kannst Du eine Fehlermeldung an den Benutzer ausgeben.
Nachteil bei diesem Verfahren: Wahrscheinlich bekommst Du keinen Fehler 404, der schnell kommt, sondern musst einen Timeout abwarten bis die zweite angesprochen wird. Man könnte daran denken, nicht den error abzuwarten, sondern die zweite mit einer Verzögerung anzusprechen, aber das wäre nicht zuverlässsig.
Ok, hab das mal versucht...Falls IP1 erreichbar ist, klappt das auch... leider wird IP2 nicht aufgerufen wenn 1 nicht verfügbar ist...brauche ich da einen zweiten Frame (wie vorher)?
Du meintest ich müsste das src-Attribut für die zweite IP setzen (Im zweiten Frame?) Wie mach ich das richtig?
Meine Idee war jetzt die zweite IP in das src-Attribut des ersten Frames zu schreiben (quasi erste IP löschen und dafür zweite nehmen) und dann das ganze Frame neu laden...
Wenn hier nicht sofort der Fehler 404 kommt, spielt das keine Rolle. Die html Seite wird eigentlich wirklich nur beim Starten der SPS benötigt, da hier mein internes Programm auf der SPS noch nicht läuft. Sollte hier das Laden etwas länger dauern, spielt das keine Rolle.
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1">
<title>TurCon_Redundancy</title>
</head>
<body>
<!-- <form>
<label for="Ip1">IpAddress1:
<input id="Ip1" name="Ip1">
</label>
<label for="Ip2">IpAddress2:
<input id="Ip2" name="Ip2">
</label>
<input type="submit" value="senden">
</form>
-->
<iframe id="iframe1" src="http://192.168.1.100:8080/webvisu.htm"></iframe>
<script>
// Eventlistener für iFrame 1 registrieren
// Die anonyme Funktion, hier in Kurzschreibweise mit Doppelpfeil,
// wird aufgerufen, wenn der iFrame geladen ist
document.getElementById('iframe1').addEventListener('load', (event) => {
// event.target ist das Element, auf das der Listener registriert wurde.
// d. h. der iFrame.
// Wir leiten auf die HTML-Seite der SPS um,
// damit sie browserfüllend dargestellt wird.
window.location.href = event.target.src;
});
// Eventlistener für iFrame 1 registrieren
//die anonyme Funktion, hier in Kurzschreibweise mit Doppelpfeil,
//wird aufgerufen, wenn der iFrame nicht geladen werden kann
document.getElementById('iframe1').addEventListener('error', (event) => {
//kann die Seite nicht geladen werden, wird versucht die zweite Seite zu laden
document.getElementById('iframe1').src = "http://192.168.1.101:8080/webvisu.htm";
})
// Eventlistener für iFrame 1 registrieren
// Die anonyme Funktion, hier in Kurzschreibweise mit Doppelpfeil,
// wird aufgerufen, wenn der iFrame geladen ist
document.getElementById('iframe1').addEventListener('load', (event) => {
// event.target ist das Element, auf das der Listener registriert wurde.
// d. h. der iFrame.
// Wir leiten auf die HTML-Seite der SPS um,
// damit sie browserfüllend dargestellt wird.
window.location.href = event.target.src;
});
// Eventlistener für iFrame 2 registrieren
// Die anonyme Funktion, hier in Kurzschreibweise mit Doppelpfeil,
// wird aufgerufen, wenn der iFrame geladen ist
// document.getElementById('iframe2').addEventListener('load', (event) => {
// event.target ist das Element, auf das der Listener registriert wurde.
// d. h. der iFrame.
// Wir leiten auf die HTML-Seite der SPS um,
// damit sie browserfüllend dargestellt wird.
// window.location.href = event.target.src;
// });
</script>
</body>
</html>
Alles anzeigen