Javascript keydown上的差异正常字符和半字符
我们分叉了实验性Mediawiki VisualEditor。此所见即所得编辑器使用隐藏的文本区域和DOM中的内容表示。当您聚焦视图时,焦点被赋予textarea,并且view listen to keydown事件将每个键入的字符添加到内容中,然后清空textarea的值 只有Mac OS X上的半个字符才会出现此问题。如果您键入^或¨或任何需要打印第二个字符的字符,则会触发keydown事件。所以,当用户想要一个“ê”时,他会键入“^”。查看获取textarea值(“^”)并清除textarea值。然后,用户输入“e”。视图将显示“^e”。另外,在Chrome上(Firefox在这种情况下更好),用户将永远无法在当前页面的任何输入中键入任何口音,而无需重新加载窗口Javascript keydown上的差异正常字符和半字符,javascript,macos,mediawiki,ime,wysiwym,Javascript,Macos,Mediawiki,Ime,Wysiwym,我们分叉了实验性Mediawiki VisualEditor。此所见即所得编辑器使用隐藏的文本区域和DOM中的内容表示。当您聚焦视图时,焦点被赋予textarea,并且view listen to keydown事件将每个键入的字符添加到内容中,然后清空textarea的值 只有Mac OS X上的半个字符才会出现此问题。如果您键入^或¨或任何需要打印第二个字符的字符,则会触发keydown事件。所以,当用户想要一个“ê”时,他会键入“^”。查看获取textarea值(“^”)并清除textar
有什么方法可以区分真实字符和半个字符吗?您是从按键按下事件中获取字符,还是从文本区域读取字符? 我只是用一个输入字段尝试了一下,它的值在第一次按“^”按钮时没有改变。但是,我正在使用windows。 最后的办法显然是以不同的方式处理这些修改按键。如果您希望支持像alt+654这样的组合键,这可能会变得有些复杂。
下班回家后,我会在mac电脑上再试一次。刚刚找到了解决办法。通过监听
keyup
事件,死键返回一个keyIdentifier
属性,该属性设置为Unidentified
因此:
您可能想考虑使用“正常”输入字段,并在用户按下Enter时将其内容复制到DOM。编辑器监听KEYDOWN事件,并查看TeTaReaA值。我试过使用keydown、keyup、keypress和value以及e对象。我发现没有什么不同的键…而且在Windows和Linux上一切都很好。只有Mac OS X失败:(我刚刚知道半键有一个真实的名字!它被称为“死键”!相关:,
keyuphandler = function(e)
{
if (e.keyIdentifier === 'Unidentified')
{
return;
}
doSomething();
}