Roland Goetzke: Inhalte in Textfeld im zweiten Frame kopieren

Hallo liebe Forum-Teilnehmer,

dies ist zwar mein erster Eintrag ins Forum, doch hoffe ich trotzdem, dass ich verständlich machen kann wo mein Problem liegt.

Ok, folgendes Problem kann ich mit meinen eher spärlichen JavaScript-Fähigkeiten nicht lösen:
Meine Seite hat zwei Frames. Im linken Frame steht jede Menge Text und im rechten Frame befinden sich ein Textfeld und ein Button. So, jetzt möchte ich im linken Frame den Text mit dem Cursor markieren und ihn durch Anklicken des Buttons in das Textfeld im rechten Frame kopieren.

Bisher habe ich nur eine JavaScript-Funktion gefunden, um den Text innerhalb einer Seite in ein Textfeld zu kopieren (s.u. Funktion1), aber ich hab keine Ahnung wie ich ihn zwischen Seiten/Frames kopieren kann (vielleicht irgendwas mit target...)

Funktion1:
function copytext(Field) {
 var selectedText = document.selection;
 if (selectedText.type == "Text") {
  var newRange = selectedText.createRange();
  Field.focus();
  Field.value = newRange.text;
} else {
 alert('Bitte Text auswählen.');
}
}

Vielleicht stand ja schonmal jemand vor einem ähnlichen Problem. Für jede Idee bin ich SEHR dankbar.

Gruß,

Roland

  1. Wenn Du den Namen des frames kennst (der wird im Frameset festgelegt), kannst Du das frame darüber ansprechen. Falls das Textfeld in einer form liegt, ist es möglich über framename.formname.textfeldname.value auf den Wert des Textfeldes zuzugreifen. Falls lediglich eine id beim Textfeld verfügbar ist schreibst Du stattdessen framename.document.getElementById(textfeldid).value

    MfG
    GK

    1. Kann sein, dass ich gerade auf dem Schlauch stehe...
      Wenn ich das Textfeld im zweiten Frame wie vorgeschlagen anspreche (Frame im Frameset definiert als "bottomFrame"), erhalte ich die Fehlermeldung 'bottomFrame' ist undefiniert.
      Nur noch mal zur Vergewisserung: Ich spreche das Textfeld mit dem Button an, der folgendermaßen definiert ist: <input type="button" value="Markierten Text kopieren" onClick="copytext(bottomFrame.doneit.select1)">
      copytext=Name der Funktion,
      bottomFrame=Name Frame,
      doneit=Name Form,
      select1=Name Textfeld

      Viele Grüße und schonmal danke für deine Antwort,

      Roland

      Wenn Du den Namen des frames kennst (der wird im Frameset festgelegt), kannst Du das frame darüber ansprechen. Falls das Textfeld in einer form liegt, ist es möglich über framename.formname.textfeldname.value auf den Wert des Textfeldes zuzugreifen. Falls lediglich eine id beim Textfeld verfügbar ist schreibst Du stattdessen framename.document.getElementById(textfeldid).value

      MfG
      GK

      1. Du kannst deine Frames über das top- oder parentfenster ansprechen:
        window.parent.anderesframe
        oder auch
        top.anderesframe
        wenn Du nur eine Framebene verwendest. Andernfalls mußt Du von top aus den Pfad der Frames über alle Ebenen angeben.
        Außerdem gibt es noch das frames Objekt, siehe http://selfhtml.teamone.de/javascript/objekte/frames.htm

        MfG
        GK

        1. Perfekt!!! "top.anderesframe" hat schon gereicht. Jetzt funktioniert alles einwandfrei.

          VIELEN DANK!

          Roland

          Du kannst deine Frames über das top- oder parentfenster ansprechen:
          window.parent.anderesframe
          oder auch
          top.anderesframe
          wenn Du nur eine Framebene verwendest. Andernfalls mußt Du von top aus den Pfad der Frames über alle Ebenen angeben.
          Außerdem gibt es noch das frames Objekt, siehe http://selfhtml.teamone.de/javascript/objekte/frames.htm

          MfG
          GK