键下法字符和半字符不同

Differency normal characters and half characters on keydown

本文关键字:字符      更新时间:2023-09-26

我们分叉了实验性的Mediawiki可视化编辑器。此所见即所得编辑器使用隐藏的文本区域和 DOM 中内容的表示形式。聚焦视图时,焦点将提供给文本区域,视图侦听 keydown 事件以将每个键入的字符添加到内容中,然后清空文本区域的值。

仅在 Mac OS X 上使用半字符时出现问题。如果键入 ^ 或 ̈ 或任何需要打印第二个字符的字符,则会触发 keydown 事件。因此,当用户想要"ê"时,他会键入"^"。查看获取文本区域值 ('^'( 并清理文本区域值。然后,用户键入"e"。视图显示"^e"。作为奖励,在Chrome上(在这种情况下Firefox更好(,用户将永远无法在不重新加载窗口的情况下在任何输入中键入当前页面上的任何重音。

有没有办法区分真实角色和半个角色?

刚刚找到了一个解决方法。通过侦听keyup事件,死键返回设置为 UnidentifiedkeyIdentifier 属性

所以:

keyuphandler = function(e)
{
    if (e.keyIdentifier === 'Unidentified')
    {
        return;
    }
    doSomething();
}

您是从按键事件中获取字符还是从文本区域读取字符?我刚刚用输入字段尝试了这个,第一次按下 ^ 按钮时它的值没有改变。但是,我正在使用窗户。最后的手段显然是以不同的方式处理这些修改按键。如果您的目标是支持 alt+654 等组合键,这可能会变得有些复杂。下班后回家后,我会在Mac上再试一次。