Détecter les et de l'espace avec JavaScript
Je suis en train de lire le contenu d'un contentEditable
div et de l'extrait de la parole. c'est à dire. le mot qui a été saisi ou qui a été modifié.
Mon approche initiale était:
- obtenir la chaîne de caractères comme
innerHTML
- obtenir la position du curseur à l'aide d'une fonction (maintenant je peut trouver le mot qui a été modifié),
- lu à l'envers jusqu'à ce qu'un espace (comparaison caractère par caractère)
- extrait de la parole à partir du point de l'espace trouvés.
Mais le problème c'est que le navigateur parfois convertit les espaces de  
et n'a parfois pas (Il n'y a pas de problème si il n'y a qu'un seul espace). Alors j'ai décidé de l'utilisation d'une deuxième boucle pour lire dans les 5 caractères si a ;
est trouvé et de contre-vérifier que. Mais c'est semble très inefficace. Donc, il y a une meilleure façon de le faire?
- Ne pourriez-vous utiliser le remplacer (w3schools.com/jsref/jsref_replace.asp) pour les transformer ensuite en arrière dans les espaces?
- Pour cela, je dois passer l'ensemble de la chaîne de & la fonction replace va analyser l'ensemble de la chaîne à remplacer l'nbsp l'. Le problème est que cette vérification vient à chaque fois qu'une lettre est entré. Donc, je suis à la recherche pour le code le plus efficace est le plan de la vitesse.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une solution de contournement. Auparavant, j'ai été en utilisant innerHTML pour obtenir le contenu.
Maintenant, je suis en utilisant
targ.firstChild.nodeValue
où targ est l'élément dont le contenu est nécessaire.Puis de vérifier avecstr.charCodeAt(i)==32 || str.charCodeAt(i)==160
.Cela fonctionne bien.
String.fromCharCode(160)
a fonctionné pour moi. Il est synonyme de
caractère.if(str == ' ')
ne fonctionnait pas si condition, ni ne trim(); maisif(str == String.fromCharCode(160))
travaillé.Pour la vérification de la normale d'utilisation de l'espace
if(str.trim() == '')
Je pense que ce que vous cherchez est ici : l'espace insécable en Javascript.
/&(amp;)?nbsp;/
suffirait. Mais si vous voulez vérifier pour les espaces insécables, depuis le navigateur transforme en des espaces, vous ne pouvez pas les distinguer à partir des espaces normaux sans vérifier le code de caractère certain.