molily: Anker auch im Frame nachladen

Beitrag lesen

Hallo,

Ich dachte, man könnte es vielleicht mit "location.href" statt "location.pathname" lösen, aber das funktioniert nicht.

Das ist eigentlich schon richtig. Allerdings bettest du hier eine URL in eine URL ein:

http://example.org/url1?http://example.org/url2#anker

Die Frage ist, zu welcher URL gehört der Anker, zur inneren oder zur äußeren?
Die Antwort ist, »#anker« gehört zur äußeren und ist nicht Teil des Query-Strings der inneren. Beim Auslesen der eingebetteten URLs bekommst du wahrscheinlich »http://example.org/url2« zurück, also *ohne* den Anker.

Eine Lösungsmöglichkeit ist, die eingebettete URL zu maskieren und beim Auslesen (d.h. beim Füllen des Frames) wieder zu demaskieren.

Das geht z.B. mit encodeURIComponent (Maskieren) und http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#decode_uri_component@title=decodeURIComponent (Demaskieren). Beispiel:

var s = 'http://example.org/url2#anker';  
s = encodeURIComponent(s);

ergibt "http%3A%2F%2Fexample.org%2Furl2%23anker"
s = decodeURIComponent(s);
ergibt wieder den Ausgangswert.

In kodierter Form lässt sich die URL in die andere einbetten, ohne dass es Verwechslungen und Doppeldeutigkeiten gibt.

Grüße,
Mathias