• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Texte mit Formatierungen kopieren

bigmac

Neues Mitglied
Hallo erstmal,
ich bin jetzt eventuell öfters hier ;-).

Ich habe folgendes Problem:
Ich möchte einen Textbaustein über eine Kopierfunktion in die Zwischenablage kopieren. Dies ist ja nur über den Internet Explorer möglich. Meine derzeitige Lösung bezieht sich auf eine Textbox, in dieser werden zum Beispiel Zeilenumbrüche (\n) oder Tabstops (\t) akzeptiert, ich möchte nun allerdings die Schriftgröße ändern oder aber den Text fettgedruckt, kursiv etc. formatieren.
Meine Idee war nun das Ganze in einen HTML-Absatz zu bringen (<p>). Die Formatierung hierfür funktioniert auch in der Ausgabe, aber ich habe keine Möglichkeit gefunden dies zu kopieren. Es ist egal, ob nun unten eine Textbox oder das HTML-formatierte steht, hauptsache es funktioniert. Ich möchte hierbei die Komplexität so niedrig wie möglich halten.

Ich habe hier Code-Beispiele geschrieben:
Textbox:
Code:
<script>
function reset() {
  text.value='';
}

function clipset() {
  var sel;
  sel = document.all.text.value;
  window.clipboardData.setData("Text",sel);
  reset();
}
</script>

<textarea id=text style="width:'60%';height:'80px';font-size:'10pt';">Ergebnistext</textarea>
<input id="copy" type="submit" value="Copy" onclick=clipset()>
<input id="reset" type="submit" value=" Reset" onclick=reset()>
<script>text.value='Dies ist ein Testtext\n\nEr funktioniert sogar mit Zeilenumbrüchen!!!\n\toder mit Tabstops...';</script>

Absatz:
Code:
<script>function reset() {
  document.getElementsByTagName('p')[0].innerHTML='';
}

function clipset() {
  var textRange = document.selection.createRange();
  textRange.moveToElementText(document.getElementsByTagName('p')[0].innerHTML);
  textRange.select();
  selection.execCommand("Copy"); 
  reset();
}
</script>

<p style="width:'80%';height:'150px';font-size:'10pt';font-family:'Arial';scrollbar:'none';background-color:'#C0C0C0';">Ergebnistext 2</p><br>
<input id="copy" type="submit" value="Copy" onclick=clipset()>
<input id="reset" type="submit" value=" Reset" onclick=reset()>
<script>document.getElementsByTagName('p')[0].innerHTML='Dies ist ein Absatz.<br><br>Er funktioniert mit gängigen HTML-Tags<br><font size=1>Aber es lässt sich nicht kopieren!</font>';</script>
Wie bekomme ich einen Text inklusive Formatierungen in die Zwischenablage?
PS: Es muss eine clientseitige Lösung sein, da es keinen Server gibt, PHP o.ä. ist ausgeschlossen.

Vielen Dank schonmal an diejenigen, die sich das Ganze durchlesen!
MfG
 
/push

Gibt es niemanden, der eine solche Anfrage beantworten kann? Google hat leider keine Lösung gefunden, lediglich die Antwort mit den Steuerzeichen (\n, \t) gibt es hin und wieder.
Die Frage wurde hier im Forum auch schon vor 3 Jahren gestellt, blieb allerdings unbeantwortet. Es gibt also doch mehrere Leute, die vor dem Problem stehen :o

MfG
 
Das Speichern eines Textes, incl. HTML-Formatierungen, in einer Variablen ist doch kein Problem, und im Netz existieren auch Scripte, mit denen sich die outerHTML Tags ändern lassen.

HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
    <p id="hello"><span class="bar">Hello</span> World</p>
    <script>
        var foo = $('#hello').clone().wrap('<p>').parent().html();
        alert(foo);
    </script>
</body>
</html>
 
Erstmal vielen Dank für die Idee, Tronjer. Bei dem Text, den du hierbei ausgibst, werden im Endeffekt auch nur die Tags kopiert bzw. weitergegeben. Wenn ich z.B. deinen Code einfach nur um
window.clipboardData.setData("Text",foo);
erweitere, entsteht
<p id="hello"><span class="bar">Hello</span> World</p>
statt beispielsweise
Hello World​
(wenn die Klasse bar nur als "fett" definiert ist)
Ein HTML-Dokument könnte man so aufbauen und entstehen lassen, aber für die Zwischenablage reicht dies noch nicht. Falls es übrigens relevant ist, soll der entstandene formatierte Text in etwas Word-ähnlichen, genauer gesagt das Microsoft Dynamics CRM, erscheinen.
PS: Meine AJAX-Kenntnisse liegen derzeit bei etwa Null, bitte um Rücksicht ;)

MfG
 
Und nochmal /push...
das Thema ist noch aktuell (und bleibt interessenhalber aktuell). Wer hat einen Vorschlag? Kompatibilität lediglich IE mit neuester Version, kommt schon, einer von euch hat sicherlich einen einfachen Trick!

MfG
 
Also mir fällt dazu auf Anhieb kein Trick ein. JavaScript läuft in einer Sandbox. Wenn es so einfach möglich wäre, die Zwischenablage zu manipulieren, könnte man damit viele lustige Dinge machen.

Du wirst in der reinen Webentwicklung wahrscheinlich auch eher wenige Leute finden, die sich auf MS-Technologien fokussieren. Versuche es doch mal im MSDN.
 
Ok, ich muss mich da korrigieren. Es gibt tatsächlich Möglichkeiten die Zwischenablage zu manipulieren, auch im Firefox. Ich habe eben mal bei GMX einen Textabschnitt per Rechtsklick kopiert, und beim Einfügen wird dann ein String angehängt: "Weiterlesen bei GMX ..." und die Artikelnummer.

Google
 
Leider keine Lösung

JavaScript läuft in einer Sandbox.
Och, das find ich nicht, man kann die Titelleiste mit ner Endlosschleife ändern lassen, man kann CSS-Formatierungen umschreiben, wodurch man sogar einzelne Elemente de- und aktivieren kann. Eigentlich ist damit alles anpassbar.

Dass das Clipboard auch im Firefox änderbar ist, war mir neu, da schau ich gleich nochmal genauer. Dann kann man ja doch plattformübergreifende Lösungen anbieten :D.

Leider geht es hier hauptsächlich darum eine Variable erstmal lediglich so zu verändern, dass Sie Formatierungen enthält. Das Weiterleiten ins Clipboard ist ja kein Problem, es muss also auch keine Veränderung nachträglich geschehen. Deine Antwort würde sehr gut in dieses Thema reinpassen.

MfG
 
Zurück
Oben