Problem mit Frames und getElementByID
Matthias
- javascript
0 minicrispie0 molily
Hallo,
Vorweg: JavaScript ist nicht meine Welt, ich bin eher in PHP zu Hause, doch mit PHP ist nicht alles möglich...
Ich habe eine Datei, in der sind 2 Links und 2 iFrames.
Klickt man auf den ersten Link, so wird in dem ersten iFrame eine Seite geöffnet (z.B. de.wikipedia.org).
Klickt man jetzt auf den zweiten Link, so soll überprüft werden, ob in dem ersten iFrame de.wikipedia.org angezeigt wird, wenn ja, dann soll im zweiten iFrame ebenfalls eine Seite angezeigt werden. Wenn nein, dann soll (erstmal) nichts passieren.
Ich habe das jetzt erstmal etwas vereinfacht, sprich, wenn man auf den zweiten Link klickt, dann kommt ein alert() und gibt an, welche URL im ersten iFrame angezeigt wird:
<html>
<head>
<title>Frame-Test</title>
</head>
<script>
<!--
function show(x) {
var url = document.getElementById("wikiframe").src;
alert(url);
}
function send(x) {
document.getElementById("wikiframe").src = "http://de.wikipedia.org/";
}
-->
</script>
<body>
<div onclick="send()" target="wiki">1. Link</div>
<div onclick="show()">2. Link</div><br>
<iframe name="wiki" id="wikiframe" src="" width="900" height="300"></iframe><br>
<iframe name="blank" src="" width="900" height="300"></iframe><br>
</body>
</html>
Das funktioniert soweit auch ganz gut, bis man feststellt, dass man nicht auf "http://de.wikipedia.org/" bleibt, wenn man dies aufruft, sondern zu "http://de.wikipedia.org/wiki/Wikipedia:Hauptseite" weitergeleitet wird.
Von getElementByID wird einem jedoch "vorgegaukelt", dass man auf "http://de.wikipedia.org/" sei. Besonders interessant wird es, wenn man in dem iFrame so viel herumklickt, bis man irgendwo ganz anders ist (z.B. bei google.de).
Gibt es eine Möglichkeit, dass die tatsächlich im iFrame angezeigte URL ausgegeben wird und nicht die URL, die irgendwann mal theoretisch hätte angezeigt werden sollen?
Das erste iFrame auf eine Größe von 1x1 Pixel zu setzen ist leider nicht möglich, da unter Umständen in dem iFrame geklickt werden MUSS.
Ich freue mich sehr über eure Hilfe!
MfG, Matthias
Hallo,
vermeide wenn möglich alle arten von frames -->
speziell in deinem fall gibt es webseiten die nicht wollen, das sie in einem frame angezeigt werden und lösen dieses auf. dadurch hast du nichts erreicht ;)
MfG. Christoph Ludwig
Hm... Aber wie kann ich dann sicherstellen, dass jemand auf einer bestimmten Seite ist, bevor eine andere Seite geöffnet wird?
Hintergrund: Ich brauche für beide Seiten die gleiche Session-ID.
MfG, Matthias
Hi,
Hm... Aber wie kann ich dann sicherstellen, dass jemand auf einer bestimmten Seite ist, bevor eine andere Seite geöffnet wird?
Hintergrund: Ich brauche für beide Seiten die gleiche Session-ID.
Dann beschreib mal bitte detailierter, was du erreichen willst, und wieso.
An Hand deines Beispiels mit "wikipedia im einen Frame" kann ich jedenfalls icht nachvollziehen, was das mit Session-IDs zu tun haben soll.
MfG ChrisB
Hallo,
deines Beispiels mit "wikipedia
ebenso sollte sich der herr angewöhnen, mit example.de zu arbeiten... :)
MfG. Christoph Ludwig
ebenso sollte sich der herr angewöhnen, mit example.de zu arbeiten... :)
Wird gemacht, jetzt ist ja ein für jeden zugängliches Beispiel mit Weiterleitung bekannt.
MfG, Matthias
[latex]Mae govannen![/latex]
ebenso sollte sich der herr angewöhnen, mit example.de zu arbeiten... :)
Jepp. Frau Hinterholzer wird sich sehr freuen.
Cü,
Kai
Hi,
deines Beispiels mit "wikipedia
ebenso sollte sich der herr angewöhnen, mit example.de zu arbeiten... :)
Aber nur, wenn er Inhaber der Domain example.de ist.
Wenn nicht, sollte er doch bei den fuer Beispiele vorgesehenen example.com/.net/.org bleiben.
MfG ChrisB
Hallo,
Aber nur, wenn er Inhaber der Domain example.de ist.
Wenn nicht, sollte er doch bei den fuer Beispiele vorgesehenen example.com/.net/.org bleiben.
omg ... wie geil ^^
sry .. aber ich dachte, das die TLD bei example egal ist :)
MfG. Christoph Ludwig
Dann beschreib mal bitte detailierter, was du erreichen willst, und wieso.
Das ist so:
Wenn jemand meine Seite öffnen will / öffnet, dann soll er sich bei einer anderen Seite einloggen. Auf diese Seite, auf der man sich einloggen kann/soll, habe ich keinen Einfluss. Ich kann also nicht in eine Datenbank schauen, ob er dort eingeloggt ist.
Ich kann nur anhand der URL erkennen, ob der User dort eingeloggt ist, oder nicht.
ausgeloggter Zustand: login.php
eingeloggter Zustand: index.php
Ruft man die index.php auf, und ist nicht eingeloggt, so wird man zu login.php weitergeleitet.
Und nur, wenn er dort eingeloggt ist, soll er Zugriff auf meine Seite (in dem zweiten iFrame) bekommen. Das ist also ein Zugriffsschutz, ohne eigenem Login-System.
Auf meiner Seite sind keine Top-Secret-Daten, weswegen ich kein eigenes Login-System brauche / haben möchte, doch es soll nicht jeder Hans-Franz, der im I-Net unterwegs ist, diese Daten sehen können.
Und wenn ein Hacker meint meine Seite hacken zu müssen, dann muss er mich schon für sehr wichtig halten.
Wo ich das hier gerade schreibe, fällt mir auf, dass es doch nicht unbedingt etwas mit der Session-ID zu tun hat.
MfG, Matthias
Hi,
Wenn jemand meine Seite öffnen will / öffnet, dann soll er sich bei einer anderen Seite einloggen. Auf diese Seite, auf der man sich einloggen kann/soll, habe ich keinen Einfluss.
Klingt nach einem vermurksten Konzept.
Und nur, wenn er dort eingeloggt ist, soll er Zugriff auf meine Seite (in dem zweiten iFrame) bekommen. Das ist also ein Zugriffsschutz, ohne eigenem Login-System.
Du hast per JavaScript keinen Zugriff auf Inhalte von fremden Domains.
Auf meiner Seite sind keine Top-Secret-Daten, weswegen ich kein eigenes Login-System brauche / haben möchte, doch es soll nicht jeder Hans-Franz, der im I-Net unterwegs ist, diese Daten sehen können.
Entweder willst du ein eigenes, oder keins. Entscheide dich.
Wo ich das hier gerade schreibe, fällt mir auf, dass es doch nicht unbedingt etwas mit der Session-ID zu tun hat.
Nein, damit auch nicht.
MfG ChrisB
Und nur, wenn er dort eingeloggt ist, soll er Zugriff auf meine Seite (in dem zweiten iFrame) bekommen. Das ist also ein Zugriffsschutz, ohne eigenem Login-System.
Nein, ist es nicht, da es von etwas Clientseitigem abhängt. Und das ist grundsätzlich deiner Kontrolle entzogen.
Auf meiner Seite sind keine Top-Secret-Daten, weswegen ich kein eigenes Login-System brauche / haben möchte, doch es soll nicht jeder Hans-Franz, der im I-Net unterwegs ist, diese Daten sehen können.
Entweder etwas ist geheim, also nur einem bestimmten Benutzerkreis zugänglich, dann brauchst du auch ein eigenes Login-System oder etwas ist öffentlich und der Benutzerkreis ist nicht eingeschränkt, dann ist es egal. Deine Anforderung ist seltsam.
Nein, ist es nicht, da es von etwas Clientseitigem abhängt. Und das ist grundsätzlich deiner Kontrolle entzogen.
Schade. Ich dachte, gerade mit JavaScript könne man Clientseitig arbeiten.
Entweder etwas ist geheim, also nur einem bestimmten Benutzerkreis zugänglich, dann brauchst du auch ein eigenes Login-System oder etwas ist öffentlich und der Benutzerkreis ist nicht eingeschränkt, dann ist es egal. Deine Anforderung ist seltsam.
Sieh es einfach wie bei dem Datenschutz der Telekom: Die Daten sind geheim, aber für jeden einsehbar ;)
Aber wenn soetwas "clientseitiges" nicht möglich ist, dann muss ich mir was anderes überlegen. Vielleicht muss doch das eigene Login-System her (dann aber mit PHP ;) ).
Auf alle Fälle vielen Dank an alle für ihre Mühe und Hilfe!
Mfg, Matthias
Nein, ist es nicht, da es von etwas Clientseitigem abhängt. Und das ist grundsätzlich deiner Kontrolle entzogen.
Schade. Ich dachte, gerade mit JavaScript könne man Clientseitig arbeiten.
Natürlich kann man mit JavaScript clientseitig arbeiten. Aber *alles*, was dabei geschieht, kann vom Client auch beliebig manipuliert werden und auch ausgelesen werden.
Entweder etwas ist geheim, also nur einem bestimmten Benutzerkreis zugänglich, dann brauchst du auch ein eigenes Login-System oder etwas ist öffentlich und der Benutzerkreis ist nicht eingeschränkt, dann ist es egal. Deine Anforderung ist seltsam.
Sieh es einfach wie bei dem Datenschutz der Telekom: Die Daten sind geheim, aber für jeden einsehbar ;)
Nein, das ist nicht vergleichbar, dort hat ja ein Fehler bei der Geheimhaltung dafür gesorgt, dass die Daten in die "freie Wildbahn" gelangten.
Aber wenn soetwas "clientseitiges" nicht möglich ist, dann muss ich mir was anderes überlegen. Vielleicht muss doch das eigene Login-System her (dann aber mit PHP ;) ).
Uh, warum gerade mit PHP?
Uh, warum gerade mit PHP?
Weil ich mit PHP besser zurecht komme, als mit JavaScript.
MfG, Matthias
Das funktioniert soweit auch ganz gut, bis man feststellt, dass man nicht auf "http://de.wikipedia.org/" bleibt, wenn man dies aufruft, sondern zu "http://de.wikipedia.org/wiki/Wikipedia:Hauptseite" weitergeleitet wird.
Von getElementByID wird einem jedoch "vorgegaukelt", dass man auf "http://de.wikipedia.org/" sei.
Das src-Attribut gibt wieder, was du im HTML-Code ursprünglich gesetzt hast bzw. mittels JavaScript nachträglich verändert hast.
Wenn der Anwender im Frame navigiert hat, dann kannst du das nicht über das src-Attribut herausbekommen.
Gibt es eine Möglichkeit, dass die tatsächlich im iFrame angezeigte URL ausgegeben wird
document.getElementById("iframe").contentWindow.location.href
Das geht aber nur, wenn sich die angezeigte Seite im Iframe auf derselben Domain befindet wie die einbindende Seite. Sonst schlägt die Same Origin Policy zu und unterbindet den Domain-übergreifenden Zugriff.
Auch von mir die Bitte, mal deine Aufgabenstellung näher zu erläutern; aus deinem Beispiel wird das nicht ganz klar.
Mathias