Jan: Copy and Paste kopiert auch verborgene Inhalte

Hallo - ich habe eine Nuss mit der Zwischenablage zu knacken - eventuell kennt jemand von Euch eine Lösung ... !

Ausgangssituation:

Ich habe mir einen einfachen "Generator" erstellt, der im Prinzip aus zwei Ebenen innerhalb eines XHTML-Dokumentes besteht.

Die erste - zunächst sichtbare - Ebene "Eingabe" enthält eine Reihe von Checkboxen, denen jeweils ein kurzer Text zugeordnet ist.
Bei Auswahl einer oder mehrerer Checkboxen und einem abschließenden Klick auf "Ergebnis zeigen" wird die Ebene "Eingabe" ausgeblendet ( display:none )
und die zweite Ebene "Ausgabe" mit den ausgewählten Texten eingeblendet ( display:block ).

Diese Texte soll man nun per "Copy & Paste" in eine beliebige Textverarbeitung übernehmen können.

Problem:

Wird hierfür z.B. über das Menü der rechten Maustaste die Option "Alles markieren" verwendet, wird unsinnigerweise auch der Inhalt der verborgenen Ebene "Eingabe" mit kopiert. Lediglich durch ein gezieltes Markieren des zu kopierenden Textes mit der Maus wird ausschließlich der gewählte Text in die Zwischenablage übernommen.

Frage:

Kann ich auf dieses Verhalten irgendwie Einfluss nehmen - d.h. die verborgene(n) Ebene(n) auch für die Zwischenablage unsichtbar machen ?

Mit Dank im voraus

Jan

  1. Hi,

    Kann ich auf dieses Verhalten irgendwie Einfluss nehmen - d.h. die verborgene(n) Ebene(n) auch für die Zwischenablage unsichtbar machen ?

    Du koenntest sie nicht per display:none verbergen, sondern komplett aus dem DOM entfernen - mittels removeChild.
    Da diese Methode dir eine Referenz auf den aus dem Dokument entfernten Knoten zurueckgibt, kannst du diese auch in einer Variablen ablegen - so dass du ihn ggf. spaeter per appendChild/insertBefore auch wieder einfuegen kannst, falls das erforderlich wird.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hallo ChrisB,

      danke für Deine pfiffige Idee - muss ich zwar erst ausprobieren, klingt aber alles schlüssig; was ich hier nicht in meinen Nachschlagewerken finde:

      ... wie/wieso gibt die Methode eine Referenz auf die entfernte Ebene zurück ... - und wie kann ich diesen Wert in einer Variable ablegen ?

      Immer wieder Neuland ... !

      Kannst Du mir das kurz an einem Beispiel illustrieren ? Wäre toll !

      Mfg Jan

      1. Lieber Jan,

        ... wie/wieso gibt die Methode eine Referenz auf die entfernte Ebene zurück ... - und wie kann ich diesen Wert in einer Variable ablegen ?
        [...]
        Kannst Du mir das kurz an einem Beispiel illustrieren ? Wäre toll !

        na, na!? SELF lesen bildet... <http://de.selfhtml.org/javascript/objekte/node.htm#remove_child@title=SELFHTML: removeChild>

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Dank Euch Beiden - Mathias und Felix !

          Ich denke, der von Euch vorgeschlagene Weg ist die Lösung !

          Selfhtml ist - natürlich - immer (m)eine meiner ersten Adressen bei der Recherche; die Abbteilung Ü40 hat aber diesen "Greif-Reflex" zum Buch noch im Rückenmark. Instinktiv greife ich also - zuerst - nach meiner gedruckten Javascript-Referenz, die nur wenige Zentimeter neben mir liegt.

          Ich hoffe, die Erklärung entlastet mich - wenigstens teilweise ...

          Besten Dank nochmals

          Mfg Jan

      2. ... wie/wieso gibt die Methode eine Referenz auf die entfernte Ebene zurück

        Ebene? Meinst du Element?
        removeChild gibt das entfernte Element zurück, damit man es später wiederverwenden kann. Es wird nur "ausgehängt", ist aber noch solange existent, wie es in einer Variablen gespeichert ist.

        Das Beispiel http://de.selfhtml.org/javascript/objekte/node.htm#remove_child speichert den ausgehängten Elementknoten in der Variable "verschwunden". Die kann man später mit .appendChild(verschwunden) verwenden, um den Knoten wieder einzuhängen.

        Vielleicht ist auch Text automatisch markierenfür dich interessant.

        Mathias