Eh bien, vous avez un problème.
Supposons que ce texte:
Hello my
name is
Josh and
this is an
example for you
Ce qui était au-dessous comme ceci:
<span>
Hello my
<span>
name is<br/>
Josh and
</span>
<span>
this is an<br/>
example for you
</span>
</span>
Supposons ensuite que je sélectionne:
Josh and
this is an
Le code HTML que j'ai choisi est:
Josh and
</span>
<span>
this is an
Donc, si vous entourez un span autour de cela, vous allez vous retrouver avec du HTML foiré.
Donc, je recommande ce qui suit:
- Obtenez le texte sélectionné avec le javascript
- Strip les balises HTML du texte sélectionné
Vous vous retrouvez avec ceci:
function getSelectedTextNoHtml() {
return getSelectedText().replace(/(<([^>]+)>)/ig, "");
}
function getSelectedText() {
if (window.getSelection)
return window.getSelection();
else if (document.getSelection)
return document.getSelection();
else if (document.selection)
return document.selection.createRange().text;
return "";
}
Vous pouvez ensuite prendre le code HTML de l'ensemble du document, dépouiller les balises HTML et fi nd l'index du texte sélectionné dans la version texte du document.
Je peux même penser à des façons (laides mais réalisables) d'obtenir l'index de la sélection en HTML. Mais je vous préviens si vous les voulez ils sont laids.
Il ya même des façons très moche pour obtenir une envergure autour du texte sélectionné avec l'ID unique que vous voulez. Bien sûr, il y a toujours des façons de faire des choses. Tout est juste un algorithme. Mais cela impliquerait de bonnes journées de travail pour l'affiner!
J'ai posté assez, si vous voulez que j'élabore, il suffit de demander!
MISE À JOUR:
OK, vous l'avez demandé :)
- Prenez le texte sélectionné et LOGGUE quelque part
- Remplacer le texte sélectionné temporairement quelque chose
tout à fait unique
- Trouver l'index de ce texte totalement unique
- Modifier le texte
Si vous voulez le faire discrètement sans leur clignotement texte et changeant, vous pouvez essayer de tirer profit du HTML espace zéro largeur:
​
bâton devant 100 fois et trouver la indice de 100 espaces de largeur nulle!
Bien sûr, il échouera si leur document comporte 100 places zéro largeur et leur texte sélectionné ailleurs, mais à ce point, je dis « laisser échouer » :)
Howzat?
Sons ambitieux. Envelopper les points de début/fin autour du nœud approprié imbriquant dans le document parent sera un cauchemar, en particulier avec le codage HTML notoirement redondant mis en place. EEK! –
Avez-vous simplement appelé "Documents Word enregistrés au format HTML" simple? –
Hé, d'accord, je le reprends. Mais je pensais simple dans le sens où ce sont des documents vers des sites Web professionnels à part entière. –