• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Von Programm erstellte html in html "einbetten" und Links

nutsymtom

Neues Mitglied
Hallo liebe html Versteher :)
Ich habe mir eine kleine, lokale Startseite für mich gebastelt. In dieser Startseite möchte ich gerne eine html Seite mit einbinden, die von einem Programm erstellt wurde.
Diese von einem Programm erstellte html will ich wenn möglich nicht manuell anpassen.
Ich habe jetzt 3 verschiedene Möglichkeiten getestet:
-iframe
-object
-embed
klappt soweit auch wie ich mir das vorstelle - Bis auf eine Sache:
Diese von einem Programm erstellte html beinhaltet externe Links. Diese werden mir leider immer in der selben frame geöffnet. Ich möchte aber das sich diese Links im ganzen Browserfenster öffnen.
Wenn ich die vor-erstellte html editiere und <base target="_top" > einfüge, funktioniert es tadellos - aber genau dieses editieren möchte ich ja vermeiden!

Wie bekomme ich das hin, ohne diese Datei zu editieren?

Danke und Gruß an alle helfenden!
 
Diese von einem Programm erstellte html beinhaltet externe Links. Diese werden mir leider immer in der selben frame geöffnet. Ich möchte aber das sich diese Links im ganzen Browserfenster öffnen.
Wenn ich die vor-erstellte html editiere und <base target="_top" > einfüge, funktioniert es tadellos - aber genau dieses editieren möchte ich ja vermeiden!

Wie bekomme ich das hin, ohne diese Datei zu editieren?
Indem Du die Startseite editierst?

Und mit JavaScript ausstattest:
HTML:
<body>
  <iframe src="..." id="targetFrame" ...></iframe>

  <script>
    function breakOutOfFrame () {
      for (var i = 0; i < document.getElementById('targetFrame').contentWindow.document.links.length; ++i)
         document.getElementById('targetFrame').contentWindow.document.links[i].target = "_top";
     }
     window.onload = breakOutOfFrame;
  </script>
</body>
 
"Indem Du die Startseite editierst?"
Ja wie auch sonst... :)
Vielen Dank für den Vorschlag! Ich bin leider nicht so gut bewandert in Sachen html, werde mich morgen mal damit auseinandersetzen!

Nochmal Danke!
 
Willst du darauf wirklich eine Antwort?
Aber du hast ja gefragt :D
Ne mal im Ernst - Ich kann dich da schon verstehen - Und ich möchte da jetzt auch nur für mich sprechen:
Ich bin kein Webstiten Programmierer und möchte das auch gar nicht sein. Mich haben nur die ganzen Starttseiten-Addons, die es für Browser gibt, nicht wirklich begeistert.
Daher habe ich mir eine (für mich hübsche) Startseite gebastelt - in html. (macht ja Sinn). Diese liegt auch nur Lokal auf meinem Rechner und ist einzig zum Privat Gebrauch. D.h. unter meinem gepfusche muss kein Webanwender leiden.
Nur bin ich da bei der target-Sache nicht weitergekommen. Und da bin ich sehr Dankbar das es Foren gibt, in denen Leute wie du, einem weiterhelfen!

Daher nicht bitte nicht ärgern!

Wenn ich heute von der Arbeit komme werde ich mich mit deinem Vorschlag auseinander setzen. Und ich hoffe, falls ich die Tage nicht weiter komme, das du mir dann nochmal hilfst. Aber ich bin eigentlich keiner, der sich den ganzen Code gerne vorkauen lässt - daher hoffen wir mal das ich es verstehe und alles klappt wie gewollt.

Nochmal Danke für deine Mühe - find ich Top!

Gruß nuts
 
Daher nicht bitte nicht ärgern!

Wenn ich heute von der Arbeit komme werde ich mich mit deinem Vorschlag auseinander setzen. Und ich hoffe, falls ich die Tage nicht weiter komme, das du mir dann nochmal hilfst. Aber ich bin eigentlich keiner, der sich den ganzen Code gerne vorkauen lässt - daher hoffen wir mal das ich es verstehe und alles klappt wie gewollt.
Sorry, falls mein Tonfall Dir gegenüber despektierlich rüberkam - war nicht so gemeint :(

Selbstverständlich helfe ich Dir gerne weiter, wenn's mit der Umsetzung Probleme geben sollte :)

Was gibt's nun für Dich hierbei zu beachten?
  1. Der JS-Code <script>...</script> kann in Deiner Startseite wahlweise im Dokumentkopf <head></head>, oder am Dokumentende unmittelbar vor </body> eingefügt werden. Persönlich nutze ich immer die letztere Variante, denn es gibt auch JS-Anwendungen, die ausschließlich so funktionieren, weil die Seite an dieser Stelle vollständig geladen ist, und zu diesem Zeitpunkt dann tatsächlich alle darin enthaltenen Elemente (JS = Objekte), die mit JS manipuliert werden sollen, im DOM (DocumentObjectModel) bekannt sind. Andernfalls würde die Konsole im Browser JS-Fehlermeldungen auswerfen, wie z.B. "X" is undefined.
  2. Der iFrame erhält mit dem id-Attribut einen eindeutigen Bezeichner - in meinem Beispiel id="targetFrame".
  3. Das Script sucht nach diesem Bezeichner mittels der document.getElementById()-Methode, und ermittelt per .contentWindow.document.links.length alle Hyperlinks, die in der iFrame-Seite enthalten sind, um ihnen mit der target-Eigenschaft das Zielfenster _top (= oberstes Fenster) zuzuweisen, die dem HTML-Attribut target="_top" im <a>-Element entspricht, das Du bekanntermaßen nicht manuell allen Links hinzufügen willst. Der Befehl "Suchen/Ersetzen" im Editor würde das aber für Dich in einem Zug erledigen (Suchen: <a , Ersetzen: <a target="_top") - das nur mal nebenbei erwähnt ;)
  4. Wenn für den iFrame schon eine anders lautende ID existiert, bitte diese im Script anstelle meiner gewählten einfügen, oder halt entsprechend meiner Vorlage umbenennen.
  5. That's all.
Viel Erfolg! :)

PS: Um nicht blos einen gebrauchsfertigen Code rüberzukopieren, ohne verstanden zu haben, was da im einzelnen genau abläuft, hier ein paar Links für's Studium:
  1. https://wiki.selfhtml.org/wiki/JavaScript/Funktion
  2. https://wiki.selfhtml.org/wiki/JavaScript/DOM
  3. https://wiki.selfhtml.org/wiki/JavaScript/DOM/Document
  4. https://wiki.selfhtml.org/wiki/JavaScript/DOM/Document/getElementById
  5. https://wiki.selfhtml.org/wiki/JavaScript/DOM/Document/links
  6. https://wiki.selfhtml.org/wiki/JavaScript/DOM/Document/links#target
  7. https://wiki.selfhtml.org/wiki/JavaScript/DOM/Event/load
 
Zurück
Oben