Ralf: Fenster mit Popup fernsteuern?

Hallo!

Ich befasse mich jetzt schon einige Zeit mit der Änderung von Inhalten eines "Basis"-Fensters durch ein daraus eröffnetes Popup via "opener" Objekt.

So lange die Daten im Basis-Fenster statisch sind, ist das auch völlig unproblematisch und funktioniert tadellos.

Im Rahmen der Programmierung ist mir aber nun die Idee gekommen, das aufrufende Fenster "fernzusteuern". Und zwar nicht in der Art, dass dort nur eine zuvor bekannte URL aufgerufen wird, sondern viel dynamischer, indem der Inhalt analysiert wird und dann Aktionen ggf. automatisch durchgeführt werden.

Nun meine Frage:
Habe ich NACH einer Aktion im Hauptfenster (manuell oder über das Popup veranlasst) im Popup Zugriff auf das nun veränderte Hauptfenster?
Kann ich also sozusagen mit dem Popup die vollständige Kontrolle über das Geschehen im Hauptfenster übernehmen?

Falls es jemanden interessiert/stört - es geht hier nicht um XSS. Es findet alles innerhalb einer Domain statt (was anderes sollte auch gar nicht funktionieren). Ich möchte nur erreichen, dass bestimmte Funktionen im Hauptfenster automatisch hintereinander ablaufen, die sonst manuell ausgeführt werden müssen.

Ralf

  1. hi,

    Habe ich NACH einer Aktion im Hauptfenster (manuell oder über das Popup veranlasst) im Popup Zugriff auf das nun veränderte Hauptfenster?

    Klar, wieso nicht?
    Die same origin policy behindert dich ja nicht, wenn beide Dokumente unterhalb der selben Domain liegen.

    Wenn du allerdings eine neue Seite ins Hauptfenster lädst, solltest du vor dem Zugriff auf deren Dokument natürlich abwarten, bis dieses vollständig geladen ist; Stichwort onLoad.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      Klar, wieso nicht?

      Mir ist auch kein Gegenargument eingefallen, wollte aber noch eine "andere Meinung" einholen.

      Die same origin policy behindert dich ja nicht, wenn beide Dokumente unterhalb der selben Domain liegen.

      Ich kann unter bestimmten Bedingungen im Hauptfenster ein SCRIPT starten und dieses erzeugt ein leeres Popup und füllt es dynamisch mit Code. Dadurch dieselbe Domain.

      Wenn du allerdings eine neue Seite ins Hauptfenster lädst, solltest du vor dem Zugriff auf deren Dokument natürlich abwarten, bis dieses vollständig geladen ist; Stichwort onLoad.

      Hmm - onLoad ist schon klar, aber wie genau müsste das konstruiert werden? Ich habe schließlich keinen Einfluss auf das Coding des Hauptfensters.

      Vermutlich muss ich im Popup eine Funktion mit setInterval() aufrufen, die regelmässig prüft, ob und was sich im Hauptfenster getan hat.

      Da fällt mir gleich noch eine Zusatzfrage ein. Wie kann ich Aktionen im Hauptfenster veranlassen, die über das Setzen von location.href hinausgehen? Das Füllen von Eingabefeldern ist ja kein Problem, aber wie veranlasse ich einen Klick? Muss ich da das betroffene Element analysieren und nach onClick suchen bzw. nach action bei Formularen?
      Oder kann ich einem Element sagen "Du wurdest angeklickt"?

      Mit dem DOM kenne ich mich ja inzwischen recht brauchbar aus. Elemente einfügen, ändern und löschen ist kein Thema - aber anklicken?

      Gruß, Ralf

      1. Mit dem DOM kenne ich mich ja inzwischen recht brauchbar aus. Elemente einfügen, ändern und löschen ist kein Thema - aber anklicken?

        Willst du die Funktionalität oder willst du den Event steuern.
        Im ersten Falle reicht es aus einfach die eingetragene Funktion aufzurufen im zweiten Fall musst du im onclick Handler die Funktion eintragen.

        Struppi.

        1. Willst du die Funktionalität oder willst du den Event steuern.

          Ich möchte über das Popup Aktionen durchführen, die sonst manuell (per Klick oder Tastatur) ausgeführt werden.

          Im ersten Falle reicht es aus einfach die eingetragene Funktion aufzurufen im zweiten Fall musst du im onclick Handler die Funktion eintragen.

          Daher ja auch meine zuvor gestellte Frage, ob ich analysieren muss, was ein Klick auslöst. Und da muss dann halt nach HTML-Element unterschieden werden, wenn kein onClick Handler definiert ist.
          Es wäre einfacher, wenn man einem Element sagen könnte, dass es angeklickt wurde.

          Wie löse ich die Aktion für ein Formular aus?

          Bisher sind das nur Gedankenspiele und ich wollte wissen, ob das überhaupt realisierbar ist. Vermutlich ist der Aufwand einfach viel zu groß in Relation zum möglichen Nutzen.

          Ralf

          1. Willst du die Funktionalität oder willst du den Event steuern.

            Ich möchte über das Popup Aktionen durchführen, die sonst manuell (per Klick oder Tastatur) ausgeführt werden.

            Die Frage ist, was ist das?

            Du hast ja davon gesprochen, dass du die Elemente mittels DOM Methoden einfügst, folglich hast du auch Zugriff auf die Event Handler.

            Im ersten Falle reicht es aus einfach die eingetragene Funktion aufzurufen im zweiten Fall musst du im onclick Handler die Funktion eintragen.

            Daher ja auch meine zuvor gestellte Frage, ob ich analysieren muss, was ein Klick auslöst. Und da muss dann halt nach HTML-Element unterschieden werden, wenn kein onClick Handler definiert ist.

            Es gibt nur wenig HTML Elemente die bei einem click Event überhaupt etwas ausführen und wenn ist dies genau definiert oder du hast es definiert.

            Es wäre einfacher, wenn man einem Element sagen könnte, dass es angeklickt wurde.

            Wie löse ich die Aktion für ein Formular aus?

            Es gibt kein Click Event für ein Formular, du meinst den submit button.
            Was passiert dann? Das Formluar wird abgeschickt, die Aktion lautet submit();

            Bisher sind das nur Gedankenspiele und ich wollte wissen, ob das überhaupt realisierbar ist. Vermutlich ist der Aufwand einfach viel zu groß in Relation zum möglichen Nutzen.

            Kommt drauf an was du vorhast.

            Struppi.

            1. Du hast ja davon gesprochen, dass du die Elemente mittels DOM Methoden einfügst, folglich hast du auch Zugriff auf die Event Handler.

              Nein - da hast du mich missverstanden. Ich kann damit umgehen, aber ich habe überhaupt keinen Einfluss auf den Aufbau des Hauptfensters. Ich könnte dort zwar Elemente einfügen, ändern und löschen, aber darum geht es primär nicht.
              Ich möchte lediglich manuelle Vorgänge automatisieren.

              Es gibt nur wenig HTML Elemente die bei einem click Event überhaupt etwas ausführen und wenn ist dies genau definiert oder du hast es definiert.

              Letzteres scheidet aus (s.o.) und außer Links und Buttons fällt mir spontan nichts ein, was ohne onClick auf einen Klick reagiert

              Es gibt kein Click Event für ein Formular, du meinst den submit button.
              Was passiert dann? Das Formluar wird abgeschickt, die Aktion lautet submit();

              Danke - das meinte ich.

              Ich werde mir also eine Funktion clickAt() schreiben, der ich das anzuklickende Element übergebe. In dieser Funktion werde ich den Typ des Elements untersuchen und die entsprechende Aktion aufrufen.

              Kommt drauf an was du vorhast.

              Es handelt sich um eine webbasierte Oberfläche für eine Datenbank (spezieller möchte ich nicht werden), wo ich immer wiederkehrende Abläufe mit einem Klick erledigen möchte.

              Ralf

              1. Es gibt kein Click Event für ein Formular, du meinst den submit button.
                Was passiert dann? Das Formluar wird abgeschickt, die Aktion lautet submit();

                Danke - das meinte ich.

                Ich werde mir also eine Funktion clickAt() schreiben, der ich das anzuklickende Element übergebe. In dieser Funktion werde ich den Typ des Elements untersuchen und die entsprechende Aktion aufrufen.

                Hört sich seltsam an.

                Du hast ein anzuklickendes Element und das kannst du manipulieren, was spricht dagegen diesem einfach einen eigenen onclick Handler zu spendieren?
                Dann brauchst du auch nichts übergeben oder prüfen.

                Wenn du vielleicht entwas konkreter würdest liesse sich auch sagen wie du das realisieren kannst.

                Struppi.

                1. Ich werde mir also eine Funktion clickAt() schreiben, der ich das anzuklickende Element übergebe. In dieser Funktion werde ich den Typ des Elements untersuchen und die entsprechende Aktion aufrufen.

                  Hört sich seltsam an.

                  Dann habe ich es noch nicht geschafft, das Vorhaben ausreichend zu erklären.

                  Du hast ein anzuklickendes Element und das kannst du manipulieren, was spricht dagegen diesem einfach einen eigenen onclick Handler zu spendieren?

                  Und was soll der machen? Die Aktion steht im Coding des Hauptfensters und wird von mir NICHT vorgegeben.

                  Dann brauchst du auch nichts übergeben oder prüfen.

                  Doch - woher soll ich sonst wissen, was ein Klick macht?

                  Wenn du vielleicht entwas konkreter würdest liesse sich auch sagen wie du das realisieren kannst.

                  Wie ich schon geschrieben hatte, handelt es sich um eine Weboberfläche für eine Datenbank (sehr global ausgedrückt).
                  Darin sind nun zig Links, Buttons, Textfelder, etc. enthalten, die normal MANUELL bedient werden.

                  Ich möchte, dass diese Bedienung durch Code im Popup-Fenster AUTOMATISCH durchgeführt wird. Nicht alles, aber zumindest einige Aktionen, die in immer gleicher Weise nacheinander ausgeführt werden.

                  Ich hoffe, dass ich dir nun erläutern konnte, worum es mir geht.

                  Ralf