我正在 IE 中创建 Rangey 节点,以实现内容可编辑 div 中使用的特殊功能。尝试使其尽可能全局化,因此有大量按键处理代码以确保它正确处理所有各种字符、语言和 IME。函数中有一个 if 语句,该函数在输入 if 语句的一系列“or”中具有一个条件“e.charCode”。在 IE 上,charCode 未定义,但仅当键入挪威语字符 å (alt + 134) 时,charCode 对该字符才实际有效。这会抛出所有内容并完全删除文本框中的 Rangey 节点,并使进一步的输入不再响应。
我的问题是为什么 å 字符的行为与我尝试过的所有其他 ASCII 扩展字符不同?日耳曼语言是否还有其他与此问题类似的特殊情况我应该了解?
最佳答案
对于这样的事情,您需要 Javascript Key Event Test Script 。这是一个简单的网页,仅向您显示哪个值位于哪个事件字段中。这样,您就可以看到代码的输入。
我的猜测是,当您在测试页中输入 å 时,您不会发现它有任何异常。
下一步是编写单元测试来创建合成事件并通过代码提供这些事件以确保其行为正确。
我知道在不进行单元测试的情况下执行此操作非常诱人。但随着时间的推移,代码变得过于复杂而难以理解,并且出现了真正奇怪的错误(就像您所描述的那样)。
关于javascript - 在 IE 8 和 9 中键入 å (alt + 134) 是唯一返回 charCode 的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831280/