Anne: document.write("<input type=\"button\" onClick=\"foo()\">");

Hallo,

wieder mal ein document.write()-Problemchen:
ich möchte in einem dynamisch erzeugten Fenster durch Klick auf einen Button eine Funktion in dem Script aufrufen. Auf dieses Problem reduziert ergibt das folgendes Script:

<script language="JavaScript">
<!--
 var win = null;

function edit(){
  win = window.open();
  win.document.write("<input type="button" name="speichern" value="speichern" onClick="foo()">");
 }

function foo(){
  alert("TEST");
 }

edit();
//-->
</SCRIPT>

Nur leider macht er's nicht! Hat jemand ne Idee?

Gruß
Anne

  1. win.document.write("<input type="button" name="speichern" value="speichern" onClick="foo()">");

    Wohin schreibst Du? Wo ist foo()? Aha.

  2. Nur leider macht er's nicht! Hat jemand ne Idee?

    Bei mit funzt das so:

    <script language="JavaScript">
     var win = null;
     function edit(){
      win = window.open();
      win.document.write("<input type="button" name="speichern" value="speichern" onClick="foo()">");
     }
    </script>
    </head>
    <body onload="javascript:edit();">
    </body>
    </html>

    MfG Tobias

    1. Bei mit funzt das so:
      <body onload="javascript:edit();">

      Das tut es nicht. Glaube mir. Und RTFM.

      1. Das tut es nicht. Glaube mir. Und RTFM.

        Hast recht. Ich hab' das eigentliche Problem mißverstanden. Ich dachte, es dreht sich lediglich um das Erzeugen des Buttons. Kommando zurück ... :-(

        MfG

    2. Hallo Tobias,

      da ändert sich gar nix. foo() wird trotzdem nicht ausgeführt. Bei mir jedenfalls. Du hast ja eigentlich nur den Aufruf von edit() aus dem Script ausgelagert. Das Problem taucht aber genaugenommen erst nach dem Aufruf bzw. während der Ausführung von edit() auf.
      (???)

      Anne

  3. Hi Anne,

    die Funktion "foo" musst du auch ins neue Fenster schreiben:

    <script type="text/javascript" language="JavaScript">
    <!--
     var win = null;

    function edit() {
     win = window.open();
     win.document.write("<input type="button" name="speichern" value="speichern"

    onClick="foo();">");
     win.document.write("<script type="text/javascript" language="JavaScript">");
     win.document.write("function foo(){ alert("TEST"); } ");
     win.document.write("</SCRIPT>");
    }

    edit();
    //-->
    </SCRIPT>

    Grüße, Anja

    1. die Funktion "foo" musst du auch ins neue Fenster schreiben:

      Die Methode sollte dem Fenster übergeben werden.

      1. Die Methode sollte dem Fenster übergeben werden.

        Wie?

        1. Wie?

          RTFM, bitte. Das gehört zu den Basics.

          1. » RTFM, bitte. Das gehört zu den Basics.

            Danke!

  4. Hi Anne

    versuchs doch mal so:

    win.document.write("<input type="button" name="speichern" value="speichern" onClick="opener.foo()">");

    muß man aber aufpassen, daß der opener noch offen ist:

    win.document.write("<input type="button" name="speichern" value="speichern" onClick="if(!opener.closed){opener.foo()}">");

    hast du nochmal in deinen alten thread geschaut ?
    da hatt ich nochmal was zum vorigen prob gepostet.

    gruß
    ptr

    1. Hallo Peter

      win.document.write("<input type="button" name="speichern" value="speichern" onClick="if(!opener.closed){opener.foo()}">");

      funktioniert, aber dabei schiebt sich das erste Fenster (vermutlich der "opener"?) vor das win. Das gefällt mir nicht ;-)

      hast du nochmal in deinen alten thread geschaut ?
      da hatt ich nochmal was zum vorigen prob gepostet.

      Das hab ich (und wollte eigentlich auch noch ne kurze Antwort schreiben ... sorry). Vielleicht hast dus ja auch bis zu dir klatschen gehört, als ich mir gegen die Stirn gehaun hab, wegen der eigentlich so simplen und naheliegenden Idee, den Array-Index zu übergeben!!! Wie du schon gesagt hast, manchmal spielen einem die eigenen Gehirnwindungen einen ganz schönen Streich ;-))

      Viele Grüße,

      Anne

      1. funktioniert, aber dabei schiebt sich das erste Fenster (vermutlich der "opener"?) vor das win. Das gefällt mir nicht ;-)

        ...ist doch nicht so schlimm, da ich in foo() win sowieso schließe...

        Also dankeschön

        Anne

        1. P.S.: so gehts doch: win.alert("TEST");

          1. hi

            zur opener.closed -abfrage:

            da baut übrigens der ie 5.0 konsequent scheiße und bringt immer true zurück, egal ob der opener geschlossen wurde oder nicht.

            gruß
            ptr

            1. hi

              zur opener.closed -abfrage:

              da baut übrigens der ie 5.0 konsequent scheiße und bringt immer true zurück, egal ob der opener geschlossen wurde oder nicht.

              Falsch!

              der 5.0 bringt für opener.closed immer false zurück, !opener.closed is immer true.

              gruß
              ptr