bonjour a tous
jusqu'a present je le faisait en string en decantant la chaine formant le code html mais j'aimerais bien le faire un peu plus proprement
voila une selection de texte dans un conteneditable dans une balise peut donner quelques bizarrerie on la deja vu
mon soucis mis a part la creation de balise vides que je gere parfaitement bien j'ai un soucis avec les espaces et/ou "nbsp;" qui sont des childNodes de type 3
je voudrais supprimer que celles la
alors dans une boucle que j'ai limiter a 10 tours je les enleves suf que quelques fois ces childNodes type 3 sont une partie de texte qu'il ne faut bien évidement pas supprimer
et c'est la que ce pose mon soucis comment identifier le texte de ces childNodes type 3
innerHTML donnant undefined ainsi que innerText
quelqu'un aurait une idée
merci du retour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 function selection() { return window.getSelection(); } function getrange() { var sel=selection(); return sel.getRangeAt(0); } function clearSpaceRange(){ var sel = selection(); var parent = sel.getRangeAt(0).commonAncestorContainer; var range=getrange(); var selectionhtml=range.cloneContents(); var oSpan = document.createElement("SPAN"); var oSpan2 = document.createElement("SPAN"); oSpan.appendChild(selectionhtml); if(oSpan.lastChild.innerHTML==""){ oSpan.removeChild(oSpan.lastChild);}//suppression de la balise vide créée par la fermeture de balise dans l'append en cas de selection croisant 2 balises alert("|" + oSpan.innerHTML +"|"); oSpan2.innerHTML=oSpan.innerHTML alert("voir type " + oSpan2.childNodes[oSpan2.childNodes.length -1 ].nodeType);//regard sur le dernier child affiche 3 si nodetype 3 for (var i = 0; i < 10; i++) { if(oSpan2.lastChild.nodeType===3){ alert(oSpan2.lastChild.nodeText);oSpan2.removeChild(oSpan2.lastChild); } } alert("oSpan2 |" + oSpan2.innerHTML +"|"); //fragment=range.createContextualFragment( oSpan.innerHTML ); }
Partager