Дифференциация нормальных и полусимвольных символов при нажатии клавиш

Мы разделили экспериментальный MediaWiki VisualEditor. Этот WYSIWYM редактор работает со скрытой текстовой областью и представлением контента в DOM. Когда вы фокусируете представление, фокус передается текстовой области, и представление прослушивает событие нажатия клавиш, чтобы добавить каждый введенный символ в содержимое, а затем очистить значение текстовой области.

Проблема возникает с половиной символов только в Mac OS X. Если вы введете ^ или ¨ или какие-либо символы, для печати которых требуется второй символ, вызывается событие нажатия клавиши. Итак, когда пользователь хочет "ê", он печатает "^". Просмотр получить значение textarea ('^') и очистить значение textarea. Затем пользователь вводит "е". Дисплей представления "^e". И в качестве бонуса, в Chrome (Firefox лучше в этом случае), пользователь никогда не сможет набирать какие-либо акценты на текущей странице в любых входах без перезагрузки окна.

Есть ли способ сделать разницу между реальным персонажем и половиной?

2 ответа

Решение

Просто нашел обходной путь. Слушая keyup событие, мертвые ключи возвращают keyIdentifier свойство установлено в Unidentified,

Так:

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

Вы получаете символ из события нажатия клавиши или читаете его из текстовой области? Я только что попробовал это с полем ввода, и его значение не изменилось при первом нажатии кнопки ^. Тем не менее, я использую Windows. Последним средством, очевидно, было бы по-разному обрабатывать эти изменяющие нажатия клавиш. Это может стать несколько сложным, если вы хотите поддерживать комбинации клавиш, такие как alt+654. Я попробую это снова на моем Mac, как только я вернусь домой после работы.

Другие вопросы по тегам