2011-03-15 47 views
1

我试图读取contentEditable div的内容并提取当前活动的单词。即。刚刚输入的字词或修改过的字词。使用JavaScript检测 和空间

我最初的做法是:

  1. GET字符串作为innerHTML
  2. 使用函数获取光标位置(现在我发现,被修饰的词)
  3. 直到一个空间倒读发现(逐字比较)
  4. 从找到的空间点提取单词。

但问题是,浏览器有时会将空格转换为 ,有时不会(如果只有一个空格,则没有问题)。然后我决定使用第二个循环来读取5个字符,如果找到a ;并检查它。但这似乎效率很低。那么有没有更好的方法来做到这一点?

+0

你不能只是使用替代(http://www.w3schools.com/jsref/jsref_replace.asp)打开,然后返回到空间? – Urbycoz 2011-03-15 09:42:31

+0

@Urbycoz:为此,我必须再次传递整个字符串,替换函数将解析整个字符串以替换nbsp。问题在于,每次输入字母时都会进行检查。所以,我正在寻找最高效的代码是速度方面。 – 2011-03-15 13:13:35

回答

5

我找到了解决方法。以前,我使用innerHTML来获取内容。 现在,我正在使用targ.firstChild.nodeValue,其中targ是需要其内容的元素。然后使用str.charCodeAt(i)==32 || str.charCodeAt(i)==160进行检查。

这效果很好。

+0

作为一种更好的方法,现在我正在浏览所有文本节点,从而获取整个文本。 – 2011-03-22 10:28:48

0

我认为你在找什么在这里:non-breaking space in Javascript

+0

谢谢,但我已经看到了这个链接。除了直接检查字符nbsp外,还有其他方法吗? – 2011-03-15 13:16:55

+0

那么,如果你需要检查文字“ ”,像'/ &(amp;)这样简单的正则表达式就足够了。但是如果你想检查不间断的空格,因为浏览器会将它们转换为空格,所以你不能将它们与普通空格区分开来,而不必检查字符代码。 – 2011-03-16 07:42:49

1

String.fromCharCode(160)为我工作。它代表 个字符。 if(str == ' ')在if条件下不工作,trim();但if(str == String.fromCharCode(160))工作。

对于检查正常使用空间if(str.trim() == '')