Homepage de.comp.lang.javascript
Homepage
de.comp.lang.javascript

FAQ de.comp.lang.javascript

FAQ
de.comp.lang.javascript

 

 

Bitte verwenden Sie als Einstiegsadresse in diese FAQ die Homepage der Newsgroup de.comp.lang.javascript. Der Aufenthaltsort dieser Seiten hier kann sich ohne Vorwarnung ändern.
 

 

Wie realisiere ich einen Link auf einen Anker in einem Fenster mit dynamisch erzeugtem HTML-Code?

Das Problem:

Ein Fenster wird mit

   neues_Fenster = window.open()

geöffnet, in dieses Fenster jedoch keine Datei geladen, sondern der Inhalt dynamisch (OnTheFly) erzeugt. Gesucht wird eine Möglichkeit, einen darin enthaltenen Anker anzuspringen.
In einer eigenen Datei würde man dafür Folgendes schreiben:

   <a href="#unten">Link nach weiter unten</A>
   ...
   <a name="unten"></A>

Der gleiche HTML-Code - dynamisch im neuen Fenster über document.write() erzeugt - liefert nicht das gewünschte Ergebnis. Beim Anklicken des Links erscheint im Gegenteil ein Directoy-Listing.

Warum?

"#unten" ist nur eine Kurzform für "URL_aktuelle_Datei#unten".

Der Browser sucht bei jedem Link zunächst die Datei und dann innerhalb der Datei bei Bedarf den Anker. Ohne explizite Angabe eines URLs heißt das, der Anker befindet sich in der gerade aktuellen Datei. Die Datei gibt es in dem Fall aber physisch nicht (OnTheFly), welchen URL hat sie?
Das ist also der Ansatzpunkt: Es gilt, den URL zu ermitteln.
Die Lösung liefert

   fly_URL = neues_Fenster.document.URL;

Damit generiert folgende Anweisung einen gültigen Link:

   neues_Fenster.document.write('<A HREF="',fly_URL,'#unten"></A>');

Nur mal zum Veranschaulichen kann man folgende Anweisung einbauen:

   neues_Fenster.document.write(fly_URL)

Dann wird etwa sowas erscheinen:
wysiwyg://91/file:/C|/verzeichnis/datei.htm (bei lokalem Test) - ein zur Laufzeit generierter URL. Die "91" ist nur ein willkürliches Beipiel, die wird (weil zur Laufzeit generiert) u.U. sogar von Aufruf zu Aufruf variieren.

Beispiel:
Mit Hilfe der Funktion fenster() wird solch ein neues Fenster geöffnet. Der generierte HTML-Code dafür enthält einen Anker "unten" und einen Link darauf.
Der generierte URL wird ebenfalls ausgegeben.

function fenster()
{
   Para = 'scrollbars=yes,resizable=yes,WIDTH=400,HEIGHT=150';
   neues_Fenster = window.open ('', 'fenster',Para);
   neues_Fenster.document.clear();
   neues_Fenster.document.open();
   fly_URL = neues_Fenster.document.URL;
   neues_Fenster.document.write('<HTML><HEAD><TITLE>');
   neues_Fenster.document.write('OnTheFly</TITLE></HEAD>');
   neues_Fenster.document.write('<BODY>');
   neues_Fenster.document.write('<A HREF="',fly_URL,'#unten">');
   neues_Fenster.document.write('nach unten</A>');
   ...
   neues_Fenster.document.write('<A NAME="unten">');
   neues_Fenster.document.write('hier ist unten</A>');
   neues_Fenster.document.write('<BR>');
   neues_Fenster.document.write('mein URL:',fly_URL);
   neues_Fenster.document.write('</BODY></HTML>');
   neues_Fenster.document.close();
}
Bitte mal wiederholen, ohne das neue Fenster vorher zu schließen, und dabei auf den generierten URL achten!
top

Diese Seite ist Teil der de.comp.lang.javascript FAQ. Die Einstiegsadresse lautet http://www.dcljs.de/. Der Text der Seite wurde erstellt von Christine Kühnel (©).

 ______ letzte Änderung: 12/2012 ______ 

 
© S. Mintert, Ch. Kühnel