Frameset im top-window aufheben
Adi K.
- javascript
Hallo zusammen!
Ich möchte per JavaScript ein Frameset aufheben, in dem ich einfach eine darin enthaltene Seite als top-window wähle. Straight forward ginge das so: location.href=frames[1].location.href
Das geht in Firefox aus Sicherheitsgründen (ganz vernünftig) nicht:
Permission denied for <file://> to get property Location.href from http://de.selfhtml.org.
Zur Illustrierung des Sinns:
(gross)
Also frame[0] links, frame[1] rechts. Bis jetzt habe ich es so gelöst:
in frame[0]:
<a id="close" onclick="if(parent.detach)parent.detach()"></a>
in top bzw. parent:
window.detach = function() {window.location.href=frames[1].location.href}
Ziel ist also, dass der Close-Butten auch wirklich macht, was er suggeriert zu tun. (Nicht etwa frame[0] einfach auf Grösse 0 verkleinern)
Kann mir jemand helfen?
Liebe Grüsse
Adi
PS: Auch den Titel der Seite rechts auslesen, wäre praktisch.
PS2: Ist iframe ein Lösungsansatz?
Das geht in Firefox aus Sicherheitsgründen (ganz vernünftig) nicht
Und deshalb wirst du vermutlich auch nicht weiterkommen, weil die Same-Origin Policy dir den Zugriff auf die URI unterbindet. Es sei denn, du hast die URI selbst gesetzt, dann kannst du einfach das src-Attribut auslesen. Aber sobald du im Frame navigiert hast, kommst du nicht an die neue URI.
PS: Auch den Titel der Seite rechts auslesen, wäre praktisch.
Das geht aus demselben Grund nicht und ist, wie du sagst, auch ganz vernünftig.
PS2: Ist iframe ein Lösungsansatz?
Nein, die Same-Origin Policy gilt immer und überall.
Ehrlich gesagt fällt mir keine Methode ein, wie du das deichseln könntest. Warum zeigst du deine Seitenleiste nicht als Browser-Seitenleiste an, ähnlich http://de.selfhtml.org/navigation/sidebars/@title=dieser?
Mathias
Hallo Mathias
Das habe ich eben schon befürchtet, dass es gar nicht möglich ist.
Einen guten Ansatz fände ich jedoch, wenn man nicht auf die Eigenschaften des Frames zugreifen kann, sondern nur auf das Frame-Objekt selber. Dann könnte man es nämlich bequem so lösen:
window = frames[1] (Es sind ja auch beides window Objekte, also wäre es sehr naheliegend.)
Die Seite in die Sidebar zu laden, ist eigentlich eine gute Möglichkeit, welche ich auch schon in Betracht gezogen habe. Sidebars sind leider so extrem browser-spezifisch. Dann werde ich mal was hinbasteln. Ich wollte noch, dass eine Nachricht mit den Hinzufüge-Links angezeigt wird, wenn die Seite nicht in einer Sidebar geladen wurde. Das stellt sich ebenfalls als mühsames unterfangen heraus.
Ich werde wohl einen Kompromiss machen müssen...
Hallo, ich habe die Seite jetzt, wie von molily vorgeschlagen, als Sidebar konzipiert.
Jetzt habe ich sie validieren lassen und der Validator meint zur Zeile:
<form action="http://www.wikipedia.org/search-redirect.php" target="_content">
there is no attribute "target".
Das muss aber sein, damit die Suchresultate nicht auch in der Sidebar erscheinen, was definitiv doof wäre. Wie könnte ich das Problem lösen?
Noch eine Frage bezüglich eines Formulars selbst. In der Spezifikation steht:
A form can contain text and markup (paragraphs, lists, etc.) in addition to form controls.
Wenn man aber ein Formular der Struktur <form action="bla"><input name="foo" value="bar"/></form>
validiert heisst es:
document type does not allow element "input" here; missing one of
"p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address",
"fieldset", "ins", "del" start-tag.
Meinen die denn, dass man nichts ins Formular schreibt?? Es kann ja nicht sein, dass man immer <form><div>
schreiben muss...
Yerf!
Das muss aber sein, damit die Suchresultate nicht auch in der Sidebar erscheinen, was definitiv doof wäre. Wie könnte ich das Problem lösen?
Du benutzt den falschen Doctype für dein Vorhaben, siehe auch den 2. Punkt.
Meinen die denn, dass man nichts ins Formular schreibt?? Es kann ja nicht sein, dass man immer
<form><div>
schreiben muss...
Doch, <form> darf in HTML strict nur Block-Elemente enthalten. Wobei sich an der Stelle auch ein <fieldset> oder <p> anbieten könnte.
Beides kannst du jedoch lösen, indem du transitional verwendest.
Gruß,
Harlequin
Das muss aber sein, damit die Suchresultate nicht auch in der Sidebar
erscheinen, was definitiv doof wäre. Wie könnte ich das Problem lösen?
Du benutzt den falschen Doctype für dein Vorhaben, siehe auch den 2. Punkt.
Müsste ich Transitional benutzen? Finde ich aber nicht so toll...
Welchen 2. Punkt?
Du benutzt den falschen Doctype für dein Vorhaben, siehe auch den 2. Punkt.
Müsste ich Transitional benutzen? Finde ich aber nicht so toll...
Wieso? Was erwartest du für Nachteile?
Struppi.
Yerf!
Welchen 2. Punkt?
Transitional würde auch die Input-Elemente direkt innerhalb der Form erlauben (also ohne Blockelemente dazwischen).
Gruß,
Harlequin