Дифференциация нормальных и полусимвольных символов при нажатии клавиш
Мы разделили экспериментальный 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, как только я вернусь домой после работы.