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

<textarea> Strg+V in HTML-Text

Zettelkasten

Neues Mitglied
Hallo Leute!

Ich habe folgendes:
- eine TextArea

Was will ich tun:
- wenn der Benutzer auf einer Webseite einen Text kopiert, so kopiert er den Text automatisch mit HTML-Tags in die Zwischenablage kopiert. (Die meisten Programme löschen diese aber sofort wenn man den Text einfügt).
- ich will machen, dass der Benutzer den Text MIT HTML-Codes einfügt

Gibt es hierfür Möglichkeiten? Muss nicht nur HTML sein, kann auch mit PHP / JS oder so gemacht sein.

Ich hoffe, ihr könnt mir helfen!

LG Zettelkasten
 
Mit HTML alleine geht das was Du willst nicht. Dafür brauchst Du JavaScript. Allerdings gibt es auch dort kein Allheilmittel. Editoren, wie auch hier im Forum, sind heute bei weitem nicht kompatibel genug um alle möglichen Formate in Zwischenablagen zu erkennen. Das muss ja nicht unbedingt HTML-Code sein, es kann auch Text aus Word mit "Pseudo-Elementen" sein. Ich würde dir raten, schau dir mal solche Editoren an (Richtext-Editoren), Beispiele sind ckEditor oder tinyMCE, wie die so etwas machen (falls sie es denn hinbekommen).
 
so würdes gehen (mit jQuery), ist allerdings echt komisch:

du gehtst alle Elemente deiner Seite durch und setzt innerhalb jedes Tags an den Anfang und an das Ende ein unsichtbares element mit dem String des Tags, also so:


Code:
$($("body *").get().reverse()).each(function(){
  var tagString = "&lt;" + this.tagName,
       attr = this.attributes;
  for (var i = 0; i < attr.length; i++)
    tagString += " " + attr[i].name + '="' + attr[i].value + '"';
  
  $(this).html('<nobr class="hidden">' + tagString + "&gt;</nobr>" + $(this).html() + '<nobr class="hidden">&lt;/' + this.tagName + "&gt;</nobr>");
});

dann brauchst du natürlich noch eine CSS-Klasse hidden, die die elemente versteckt. visibility = "hidden" oder display="none" werden vom Browser glaub ich mal nicht mitkopiert, machs also so:

Code:
.hidden  {
  display:block;
  height:0;
  width:0;
  overflow:hidden;
}

Ein Problem bei der Sache wäre nur, dass z.B. images, also tags, die keinen text-inhalt erlauben (+scripts und sowas) nicht dabei wären. Dazu müsstest du in jedem Element alle Knoten durchgehen (auch die Textknoten!) und um jeden Knoten herum (also nicht im Knoten selbst) so ein <nobr> mit dem tagString legen. Kannst ja machen...
Du musst nur aufpassen, da z.B. wenn du vorher einen Event-Handler hattest, der jetzt nicht mehr auf das Element zeigt, da dies neu gesetzt wurde (durch .html()), da kann der Browser ja nicht wissen, welches element du eigentlich meinst. Deshalb musste ich auch die Reihenfolge des .each() umdrehen. Für das Script also am besten vor anderen aus.
 
Zuletzt bearbeitet:
Zurück
Oben