使用JavaScript检测空格

8
我正在尝试读取一个contentEditable div的内容,并提取当前活动单词,即刚刚输入或修改的单词。
我的初始方法是:
  1. 将字符串作为innerHTML获取
  2. 使用函数获取光标位置(现在我可以找到被修改的单词)
  3. 向后读取,直到找到空格(逐个字符比较)
  4. 从找到的空格点提取单词。
但问题在于浏览器有时会将空格转换为 ,有时则不会(如果只有一个空格就没有问题)。然后我决定使用第二个循环,如果发现a ;,则读入5个字符并检查。但这似乎非常低效。那么有更好的方法吗?

你不能只使用 replace (http://www.w3schools.com/jsref/jsref_replace.asp) 将它们转换回空格吗? - Urbycoz
@Urbycoz:为此,我必须再次传递整个字符串,并且替换函数将遍历整个字符串以替换空格。问题在于每输入一个字母就会进行一次检查。因此,我正在寻找速度最高效的代码。 - Diff.Thinkr
3个回答

15

String.fromCharCode(160) 对我有效。它代表   字符。在 if 条件中使用 if(str == ' ') 无效,trim() 也不行;但是 if(str == String.fromCharCode(160)) 可以运作。

检查普通空格请使用 if(str.trim() == '')


9
我找到了一个解决方法。之前,我使用innerHTML来获取内容。 现在,我使用来获取需要的元素的内容,然后检查是否符合 。
这样做效果很好。

作为更好的方法,现在我正在查看所有文本节点,因此获取整个文本。 - Diff.Thinkr

0

谢谢,但我已经看过那个链接了。除了直接检查字符 nbsp 之外,还有其他方法吗? - Diff.Thinkr
如果您需要检查字面量" ",那么一个简单的正则表达式如/&(amp;)?nbsp;/就足够了。但是,如果您想检查不间断空格,由于浏览器将其转换为空格,您无法在不确定字符代码的情况下区分它们与普通空格。 - Halil Özgür

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接