Rolf B: Link einer Website in iFrame in anderem iFrame öffnen

Beitrag lesen

Hallo ChristianG,

Wir können auf dem Server, auf dem Icinga laufen wird auch eine eigene HTML Seite erstellen.

Das ist gut. Dann könnt ihr die Rahmenseite, die die iframes einbindet, aus der gleichen Quelle holen, und damit vertrauen die iframes dieser Seite. JavaScript, das auf der Rahmenseite läuft, kann dann auf das DOM des iframe zugreifen.

Ich habe eine kleine Testseite gemacht.

<!DOCTYPE html>
<html>
<head><title>iframe test</title></head>
<body>
<h1>IFRAME-Test</h1>
<main>
<iframe id="topo" src="topologie.html"></iframe>
<iframe id="content" src=""></iframe>
</main>
<script>
(function() {
   let topo = document.getElementById("topo");
   let content = document.getElementById("content");
   
   topo.addEventListener("load", topoLoadHandler);
   
   function topoLoadHandler() {
      topo.contentDocument.addEventListener("click", topoClickHandler);
   }
   
   function topoClickHandler(e) {
      if (e.target.tagName == "A") {
         content.src = e.target.href;
         e.preventDefault();
      }
   }
})();
</script>
</body>
</html>

Wenn im topo-iframe ein Link geklickt wird, öffnet sich die entsprechende Seite im content-iframe. Das muss man für deinen Anwendungsfall sicherlich noch verfeinern, aber das ist das Prinzip. Voraussetzung ist, dass diese HTML Seite aus dem gleichen Web stammt wie die Icinga Topologieseite. Andernfalls könnte man vielleicht noch was mit CORS-Headern anfangen, aber ich mutmaße mal, dass ihr die nicht hinzugefrickelt bekommt.

Rolf

--
sumpsi - posui - clusi