Der Martin: In fremdem Fenster value für input-Felder setzen

Beitrag lesen

Hi,

ich hab Javascript nie richtig kapiert, jetzt muss ich aber etwas realisieren, da gehts nicht ohne.

naja, meine große Liebe ist Javascript auch nicht gerade, aber so übel ist es auch wieder nicht.

Auf meiner Webseite habe ich Playlisten und Charts. Nu sollen Titel und Interpret in die Wunschbox eines Radios. Die Wunschbox in einem neuen Fenster öffnen, krieg ich ja mit window.open gerade noch hin. Die ID des Formulars ist bekannt (grussbox) und die namen der input-Felder auch (titel, interpret).

Halb so schlimm. Mit dem Aufruf von window.open() bekommst du ja schon eine Referenz auf das window-Objekt des neu geöffneten Fensters; ich nenne das Objekt mal popup. Dieses hat, wie das ursprüngliche Fenster auch, ein document-Objekt als Eigeschaft, über das du die üblichen Methoden wie z.B. getElementById() innerhalb dieses neuen Fensters nutzen kannst. Also stark vereinfacht:

 popup = window.open(popupurl, festername);  
  
 ...  
  
 var f = popup.document.getElementById(formID);        // f ist nun eine Referenz auf das Formular im Popup  
 f.elements["title"].value = "Nothing Else Matters";   // value eines Eingabefeldes setzen

Wichtig ist, dass du dem Browser Zeit gibst, das Popup auch zu laden und zu initialisieren. Die beiden oben skizzierten Blöcke dürfen also nicht unterbrechungsfrei aufeinander folgen, sondern nach dem window.open() muss die Scriptausführung zunächst unterbrochen werden. Das Popup kann sich aber bei seinem Elternfenster "bereit melden"; über die vordefinierte Variable opener hat es Zugriff auf das window-Objekt seines Elternfensters und könnte in dessen Kontext eine Funktion aufrufen oder eine Variable setzen.

Ich kann an dem Formular nichts verändern, will ich auch nicht. Es sollen nur nach dem Öffnen direkt Titel und Interpret in die entsprechenden input-Felder reingeschrieben werden.
Geht das überhaupt?

Vorausgesetzt, Elternfenster und Popup kommen von derselben Domain, ja. Wenn nicht, scheitert das ganze an der Same Origin Policy.

Irgendwie muss es gehen, ist ja wohl eine der Grundlagen von Spam-Robotern.

Nein, kaumstens. Die sprechen meistens direkt das serverseitige Script an, ohne das Formular überhaupt zu nutzen, und Javascript können die meisten Bots auch nicht.

So long,
 Martin

--
Wenn die Amerikaner eines Tages von jeder Tierart ein Pärchen nach Cape Canaveral treiben ...
ja, DANN sollte man endlich misstrauisch werden.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(