Hallo,
gleich vorweg ich kenne mich mit JavaScrpt nicht aus. Bin eigentlich PHP Programmierer. Ich möchte jedoch wissen ob es in JavaScript eine elegante Lösung für mein Problem gibt. Mit PHP wäre es sehr aufwendig bis fast unmöglich.
Folgendes Problem:
Ich habe 2 Frames, einen TOP und einen MAIN. im MAIN werden nun andere Webpages angezeigt (Fremde Pages), welche ja auch Frames enthalten können. Gibt es eine Möglichkeit zu verhindern das sich trotz gesetztem target="_blank" Tag oder ohne target tag der angeklickte Link im Mainframe und nicht in einem extra Fenster öffnet?
Bedenke:
Ich kann diese Funktion nur in dem TOP-Frame ausführen, da ich auf den Inhalt des Mainframes keinen Einfluss habe (fremde webseite). Es sollte also möglich sein, vom TOP-Frames aus den geklickten Link des MAIN-frames „abzufangen“ um diesen wiederum im Mainframe anzeigen zu lassen. Wichtig ist auch das Framebasierende Pages auch richtig angezeigt werden. Also ALLE Frames der Femden Page in MAIN angezeigt werden. So als würde man die Seite ganz normal besuchen.
Ich hoffe es ausführlich erklärt zu haben. Für Eure Hilfe schon mal vielen Dank.
Gruß Michael
Im normalen Browser geht dies nicht, da sind die Sicherheitseinstellungen vor. Es ist nicht möglich über Domaingrenzen hinweg auf webseiten in einem Frame zuzugreifen. Die Einzige Möglichkeit die ich sehe ist unter Windows mit den sogenannten HTAs (Hypertext-Applications)zu arbeiten. Innerhalb dieser wird das Sicherheitsmodell des Browsers nicht angewendet, das ermöglicht natürlich den Zugriff, öffnet allerdings auch Tür und Tor für Sauereine auf den Webseiten die du anzeigen willst, wenn du das Sicherheitsmodell auch fur die angezeigten Webseiten deaktivierst (geht mit APPLICATION=‚yes‘ in Frame oder IFrame, natürlich nur innerhalb von htas und nicht im normalen Browser).
So wenn es soweit steht könntest du einfach die Angezeigten Seiten nach links scannen und die targets per script aus den Objektmodell rauswerfen. Den Start dafür hinzukriegen ist evtl. nicht einfach, ich weiss im Moment nicht ob onLoad im Frame dafür geht oder ob man anders herumzaubern muss. hinzu kommt noch das einige Seiten Funktionalität enthalten die dafür sorgen das sie automatisch auf Top-Ebene (nicht dein TOP, sondern das die Rootebene des Framesets) dargestellt werden, wie dein Frameset darauf reagiert weiss ich nicht, aber ich denke es wird zerstört werden…
T.
Kleiner Zusatz
Hab gerade nachgedacht und da fiel mir wieder ein, dass innerhalb von HTA Framesets die Eigenschaften top,parent etc auf das eigene window anstatt auf windows im frameset verweisen. Das ist wahrscheinlich so gemacht um eben Framesets auszuhebeln die sich auf Rootebene ferkeln wollen…
weiter infos zu HTAs unter:
http://www.msdn.microsoft.com/library/default.asp?ur…
T.
Erstmal Danke für die Antwort. Aber da, das ganze auf jedem Browser und auch unter Linux funktionieren muss, denke ich nicht das, dies die richtige Lösung ist. Ich denke ich werde es anders lösen müssen.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]