【问题标题】:Detect   and space with JavaScript使用 JavaScript 检测和空间
【发布时间】:2011-03-15 07:44:09
【问题描述】:

我正在尝试读取 contentEditable div 的内容并提取当前活动的单词。 IE。刚刚输入的词或被修改的词。

我最初的做法是:

  1. 获取字符串为innerHTML
  2. 使用函数获取光标位置(现在我可以找到被修改的单词)
  3. 向后读直到找到一个空格(逐个字符比较)
  4. 从找到的空间点提取单词。

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

【问题讨论】:

  • 你不能直接使用替换 (w3schools.com/jsref/jsref_replace.asp) 转回空格吗?
  • @Urbycoz:为此,我必须再次传递整个字符串,并且替换函数将解析整个字符串以替换 nbsp 的。问题是每次输入字母时都会进行此检查。所以,我正在寻找最有效的代码是速度方面。

标签: javascript whitespace html-entities


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    这很好用。

    【讨论】:

    • 作为一种更好的方法,现在我正在查看所有文本节点,从而获取整个文本。
    【解决方案3】:

    我认为您正在寻找的内容在这里:non-breaking space in Javascript

    【讨论】:

    • 谢谢,但是我已经看到那个链接了。除了直接检查字符 nbsp 之外,还有其他方法吗?
    • 好吧,如果您需要检查文字“ ”,像/&(amp;)?nbsp;/ 这样的简单正则表达式就足够了。但是如果你想检查不间断的空格,因为浏览器会将它们转换为空格,你不能在不检查字符代码的情况下将它们与普通空格区分开来。
    猜你喜欢
    • 2018-05-17
    • 2019-12-31
    • 2010-10-29
    • 2010-10-14
    • 2021-08-23
    • 2017-05-19
    • 1970-01-01
    • 2013-02-05
    相关资源
    最近更新 更多