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

Hallo,

ich hab Javascript nie richtig kapiert, jetzt muss ich aber etwas realisieren, da gehts nicht ohne.
Folgendes Problem:
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).
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? Irgendwie muss es gehen, ist ja wohl eine der Grundlagen von Spam-Robotern. Ich will ja nun nicht spammen, vielleicht mal kurz gucken:
http://www.ninja4ever.de/inet-radio/charts.php
Irgendwas aussuchen. Es geht um die erste Wunschbox. Die zweite spreche ich per PHP an, da ist das kein Thema, aber wie geht es mit der ersten?

Ciao und frohe Ostern

  1. 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:(
    1. Hallo,

      Geht das überhaupt?

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

      Tja, nee, dann gehts nicht, es sind unterschiedliche Domains, muss ich mir also was anderes einfallen lassen. Da lag ich mit meinen Versuchen zumindest völlig richtig, ich war schon langsam am Verzweifeln.

      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.

      Ah ja, na immerhin doch noch was gelernt, danke ;)

      Ciao und frohe Ostern

      1. Hi,

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

        Tja, nee, dann gehts nicht, es sind unterschiedliche Domains, muss ich mir also was anderes einfallen lassen.

        Du kannst natürlich versuchen, dir das Formular (von dem ich auf der von dir genannten Beispielseite keine Spur entdecken konnte) selber nachzubasteln, innerhalb deiner Seite - und als Zieladresse gibst du dann die unterhalb der fremden Domain an. (Die Antwort auf den Formular-Request wird dann natürlich auch von letzterer kommen.)

        Das setzt aber voraus, dass das verarbeitende Scripte keine „Absicherung“ über Referrer-Prüfung, Session o.ä. einsetzt.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?