# copy und paste per button



## HAL (17. März 2003)

kann man per html, javascript oder vielleicht auch php irgendwie per button oder sonstwie einen vordefinierten text in den zwischenspeicher laden, um ihn später wieder durch einen anderen button einzukopieren (ind ein formularfeld)?

wäre super wenn mir das jemand sagen könnte!
THX
HAL


----------



## Adam Wille (17. März 2003)

Nicht in die Zwischenablage des Users, deren Inhalt er über STRG+V irgendwo anders einfügen könnte, das ist afaik unmöglich.

Du kannst ja aber den Textfeldinhalt einer Variablen zuweisen und dann woanders den Inhalt dieser Variablen reinladen - ist nix drin, wäre die Zwischenablage quasi leer, ansonsten wird der Text eingefügt. 

hth,
Geist


----------



## HAL (18. März 2003)

> _Original geschrieben von Geist _
> *Nicht in die Zwischenablage des Users, deren Inhalt er über STRG+V irgendwo anders einfügen könnte, das ist afaik unmöglich.
> 
> Du kannst ja aber den Textfeldinhalt einer Variablen zuweisen und dann woanders den Inhalt dieser Variablen reinladen - ist nix drin, wäre die Zwischenablage quasi leer, ansonsten wird der Text eingefügt.
> ...



naja, das ist ja nix besonderes....aber es geht doch:

<b>Bitte kopierein sie folgenden Text mit STRG+C</b>


----------



## Adam Wille (18. März 2003)




----------



## Fabian H (18. März 2003)

Is zwar IE, abba lauffähig:


```
<html>
<head>

</head>
<body>
<input type="button" value="Copy" onClick="document.formu.txt.focus();document.execCommand('Copy');">
<input type="button" value="Paste" onClick="document.formu.txt.focus();document.execCommand('Paste');">
<br><br>
<form name="formu">
<textarea cols=60 rows=12 name="txt">Edt me please! bla bla bla  buh buh</textarea></form>

</body>
</html>
```

Ps: Wers nicht glaubt, dass die Zwischenablage benutzt wird: ausprobieren!


----------



## 3ul3-daniel (23. Mai 2006)

aber warum geht der nur im ie?
kann man den auch fürs ff machen?


----------



## Quaese (23. Mai 2006)

Hi,

für den IE existiert ausserdem noch das Objekt *clipboardData* mit den Methoden *setData* zum Beschreiben 
und *setData* zum Auslesen der Zwischenablage.

```
// Beschreiben
window.clipboardData.setData('Text', "Ich komme in die Zwischenablage");

// Auslesen
alert(window.clipboardData.getData('Text'));
```
Ciao
Quaese


----------



## Sven Mintel (24. Mai 2006)

Die für den IE genannten Methoden funktionieren allerdings nur, wenn dort die betreffende Sicherheitsoption aktiviert ist....

"Einfügeoperationen über ein Skript zulassen"


----------



## 3ul3-daniel (24. Mai 2006)

achso.
und wie kann man einem textfeld oder textarea eine funktion zuweisen?
also das man nicht erst einen button drücken muss!?


----------



## 3ul3-daniel (25. Mai 2006)

es funktioniert jetzt alles, aber wenn ich das textfeld unsichtbar machen will, funktioniert die function nicht mehr! warum?

und kann javascripz die variablen weiter geben?
in txt dateien speichern oder so? oder besser noch verschicken?


----------



## MArc (26. Mai 2006)

3ul3-daniel hat gesagt.:
			
		

> es funktioniert jetzt alles, aber wenn ich das textfeld unsichtbar machen will, funktioniert die function nicht mehr! warum?



Schau mal in deinem IE unten rechts. Da steht meistens eine Info wenn ein Problem in einem Script festgestellt wurde.

Wenn du das Objekt versteckst / unsichtbar machst, kann das Skript dem Objekt kein Fokus geben. War bei mir jedenfalls so.



			
				3ul3-daniel hat gesagt.:
			
		

> und kann javascripz die variablen weiter geben?
> in txt dateien speichern oder so? oder besser noch verschicken?



Du kannst es in ein Cookie speichern. Wenn du es Global benötigst.
Wie meinst du verschicken?

Gruss,
MArc


----------



## 3ul3-daniel (28. Mai 2006)

schon gut.
hab es jetzt mit php und js geschafft. Danke für die Hilfe.


----------



## Sturmrider (5. Juni 2006)

HI^^
Und wie bekomme ich mit folgendem Quellcode hin:


```
<html>
<head>

</head>
<body>
<input type="button" value="Copy" onClick="document.formu.txt.focus();document.execCommand('Copy');">
<input type="button" value="Paste" onClick="document.formu.txt.focus();document.execCommand('Paste');">
<br><br>
<form name="formu">
<textarea cols=60 rows=12 name="txt">Edt me please! bla bla bla  buh buh</textarea></form>

</body>
</html>
```
dass wenn ich auf dein Button Copy klicke einfach ein text "to clip board" kopiert wird, der unsichtbar irgendwo im Quellcode steht (also nicht ausgegeben wird)
Also das ganze nicht an eine Textarea gebunden ist.

Und was das Einfügen betrifft, hat jemand einen Code, der das "to clip board" kopierte in einen Input-Tag (<input typ=text...>) einfügt (natürlich bei Button paste-klick) und dabei den alten Inhalt des Input-Tags überschreibt?

Gruß Sturmrider


----------



## Sven Mintel (5. Juni 2006)

Wie du den Inhalt der Zwischenablage lesen und schreiben kannst, steht hier im Thema... du musst es nur lesen


----------



## Sturmrider (5. Juni 2006)

*nickt* stimmt, entschuldigung

```
<input type=button value=kopieren onclick=window.clipboardData.setData('SessionID','Dieser Text to Clipboard');>
```
allerdings habe ich immernoch keine Ahnung, wie ich mit getData die Daten aus dem clipboard in einen bestimmten <input typ=text...> laden kann 
Hinzu kommt, dass ich nicht weiß wie man den schon vorhandenen Inhalt des <input typ=text...> löschen und durch paste des clipboard-Inhalts ersetzen kann
Ich ersuche nocheinmal eure Hilfe ^^

Gruß Sturmi


----------



## Sven Mintel (5. Juni 2006)

Erstmal: der 1 Parameter bei getData() und setData() definiert das Format der Daten in der Zwischenablage...in deinem Fall muss es jeweils "Text" sein....und nicht SessionID.

Den Inhalt eines Textfeldes änderst/leerst du, indem du auf sein value-Attribut zugreifst...
leeren:

```
document.formularname.feldname.value='';
```

Da der ursprüngliche Inhalt sowieso entfernt wird, wenn du das value-Attribut änderst, brauchst du vorher aber nicht leeren...einfach zuweisen:

```
document.formularname.feldname.value=window.clipboardData.getData('Text');
```

Das ganze (Zugriff auf die Zwischenablage) ist aber in deinem Fall nicht notwendig, und ohnehin problematisch...

Es funktioniert nur im IE, und dort auch nur je nach Sicherheitseinstellung
Du greifst damit auf Daten ausserhalb des Browsers zu. Schlimmstenfalls könntest du damit wichtige Daten des Benutzers vernichten, welche er gerade im clipboard hat... man könnte dich deswegen vielleicht sogar auf Schadensersatz verklagen.

Definiere schlicht eine Variable... diese kannst du lesen und schreiben wie du willst, und das funktioniert in allen Browsern.


----------



## Sturmrider (6. Juni 2006)

k, danke für die Infos (es funktioniert, aber ich werde wohl besser auf deinen Rat hören, auch wenns nur für ein AdminMenü gedacht war)
Das mit der Variable funktioniert in meinem Fall so leider kaum bzw. wäre mordsmäßig aufwendig.
Gibt es eine möglichkeit <input type=text ...> immer als markiert und (wenn möglich) als uneditierbar anzuzeigen? (so, dass man selber mit rechtsklick kopieren kann, wenn man möchte)
Für dieses getData vom Clipboard, gibt es da eine Möglichkeit die in allen Browsern funktioniert? (aus dem Cash laden dürfte ja kein sicherheitsrisiko darstellen oder?)

Gruß Sturmrider


----------



## Sven Mintel (7. Juni 2006)

Warum wäre das mit der Variablen ein Mordsaufwand?
Im Clipboard hast du auch nicht mehr als 1 String...ich seh da keine Probleme.

In anderen Browsern hast du keinen Zugriff auf die Zwischenablage.

Zu dem input: über das Attribut "readonly" bewirkst du, dass man es nur lesen kann.
Immer selektiert sein kann es nicht...es sollte aber reichen, wenn es selektiert ist, wenn man hineinklickt.

```
<input readonly onclick="this.select()" value="blablubb">
```


----------



## Sturmrider (7. Juni 2006)

Du hast recht, normalerweise würde es gehen (und wohl auch in meinem Fall, allerdings würde das bewirken, dass ich meine PHP-Script ziemlich stark umschreiben müsste...außerdem würde so die Dynamik, alles auf einer Seite erledigen zu können verloren gehen  ) Nein, ich denke ich weiß was ich mache ^^ Danke trotzdem für dein Bemühen!

Noch eine kurze Frage zum Abschluss, ist es möglich das wenn man in das Feld:
<input readonly onclick="this.select()" value="blablubb">
mit der rechten Maustaste klickt, dass es dann auch schon komplett selektiert wird?

Gruß Sturmrider


----------



## Sven Mintel (8. Juni 2006)

Sturmrider hat gesagt.:
			
		

> ..........
> mit der rechten Maustaste klickt, dass es dann auch schon komplett selektiert wird?



probiers mal so:

```
<input readonly onfocus="this.select()" oncontextmenu="this.select()"value="blablubb">
```


----------

