Convertir innerHTML d'un contenteditable texte à la normale de la chaîne
- Je utiliser un contenu modifiable par l'élément :
<span id="myinput" contenteditable="true">This is editable.</span>
et
document.getElementById('myinput').innerHTML
de lire son contenu à partir de Javascript.
Mais le résultat est le suivant :
"blah "
=>innerHTML = "blah   "
"bonjour\n bonsoir"
=>innerHTML = "bonjour<br>bonsoir"
(Firefox) etinnerHTML = "bonjour<div>bonsoir</div>"
(Chrome)- peut-être il ya beaucoup d'autres choses qui sont convertis en HTML...
Comment convertir innerHTML
en texte normal?
(c'est à dire dans mes 2 exemples : "blah "
et "bonjour\n bonsoir"
)
Apparemment, vous devez traiter le contenu d'un sous-arbre de l'arbre de document, en extrayant le contenu du texte et insérer des sauts de ligne, selon certaines règles (que vous devez définir). Les détails dépendent en partie sur le utilisation du texte.
C'est partiellement résolu :
C'est partiellement résolu :
innerText
fonctionne pour tous les navigateurs, sauf Firefox, pour lequel j'ai créé une autre question :stackoverflow.com/questions/25893229/...OriginalL'auteur Basj | 2014-09-17
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser;
En termes de recherche mais les sauts de ligne, etc.;
var text = el.textContent || el.innerText;
.textContent
ne pas convertir<br>
à\n
innerText
fonctionne sur IE Chrome mais n'est pas disponible sur Firefox.textContent
ne fonctionne pas, parce que les sauts de ligne sont perdus :"bonjour\n bonsoir"
=>textContent = "bonjourbonsoir"
. Comment faire face à ce problème ?mise à jour de la réponse, la seule façon que je peux voir désinvolte est de déterminer le type de nœud et de gérer de manière appropriée. Pourrait probablement être fait mieux avec quelques regex wizadry
il travaille maintenant! merci @EvilEpidemic
OriginalL'auteur EvilEpidemic
En raison du fait que ce comportement n'est pas cohérent dans les différents navigateurs, vous avez à mettre en œuvre vous-même:
En action: http://jsfiddle.net/koyd8h59/1/
Bien sûr, vous devez ajouter votre propre code si vous souhaitez utiliser
<h1>
et d'autres au niveau du bloc des balises.OriginalL'auteur Bart