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