Konvertieren von innerHTML eines contenteditable text zu normalen string
Verwende ich ein content-editable-element :
<span id="myinput" contenteditable="true">This is editable.</span>
und
document.getElementById('myinput').innerHTML
zu Lesen, dessen Inhalt Javascript.
Aber das Ergebnis ist :
"blah "
=>innerHTML = "blah   "
"bonjour\n bonsoir"
=>innerHTML = "bonjour<br>bonsoir"
(Firefox) undinnerHTML = "bonjour<div>bonsoir</div>"
(Chrom)- vielleicht gibt es viele andere Dinge, die in HTML konvertiert...
Wie konvertiert innerHTML
in normalen text?
(d.h. in meinem 2 Beispiele : "blah "
und "bonjour\n bonsoir"
)
Offensichtlich benötigen Sie den Inhalt als einen Teilbaum des Dokuments, Baum, extrahieren den text und das einfügen Zeilenumbrüche nach bestimmten Regeln (die Sie definieren müssen). Die details hängen teilweise von der beabsichtigten der text.
Dies ist teilweise gelöst :
Dies ist teilweise gelöst :
innerText
funktioniert für alle Browser außer Firefox, für die ich erstellt habe, eine weitere konkrete Frage :stackoverflow.com/questions/25893229/...InformationsquelleAutor Basj | 2014-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen mit;
In Bezug auf die Suche Zeilenumbrüche, etc, betrachten;
var text = el.textContent || el.innerText;
.textContent
nicht konvertieren<br>
zu\n
innerText
funktioniert unter IE + Chrome, aber nicht verfügbar für Firefox.textContent
funktioniert nicht, weil die Zeilenumbrüche verloren :"bonjour\n bonsoir"
=>textContent = "bonjourbonsoir"
. Wie mit diesem problem umzugehen ?aktualisierte Antwort, der einzige Weg, ich kann sehen, offhand ist die Bestimmung der einzelnen Knoten-Typ und entsprechend behandeln. Wahrscheinlich besser getan werden kann, mit einigen regex wizadry
es funktioniert jetzt! danke @EvilEpidemic
InformationsquelleAutor EvilEpidemic
Aufgrund der Tatsache, dieses Verhalten ist nicht konsistent in den verschiedenen Browsern, die Sie implementieren müssen, um diese selbst:
In Aktion: http://jsfiddle.net/koyd8h59/1/
Natürlich müssen Sie fügen Sie Ihre eigenen code, wenn Sie verwenden möchten
<h1>
und andere block-level-tags.InformationsquelleAutor Bart