как определить конец ввода многобайтовых символов с помощью JavaScript?

В настоящее время я слушаю клавишу Enter, чтобы начать отправку сообщения.

Но для многобайтовых символов предполагается, что клавиша Enter выбирает определенный символ.

Проблема в том, что я понятия не имею, как определить, находится ли пользователь в процессе ввода многобайтового символа, и даже если он находится в этом процессе, сообщение будет отправлено при первом нажатии клавиши Enter.

Так что пользовательский опыт действительно странный.

У кого-нибудь есть решение этого?

Если вы не понимаете, что я имею в виду выше, можете попробовать поговорить здесь, и как только вы начнете разговор, переключившись в многобайтовый режим, тогда вы поймете, что я имею в виду.

Ссылка здесь:

http://maishudi.com/OMegle.php


person omg    schedule 17.05.2009    source источник


Ответы (1)


Я предполагаю, что ваша ссылка на многобайтовый ввод - это ссылка на методы ввода (или редакторы методов ввода в Windows).

К сожалению, на данный момент нет реального решения - DOM3 собирался добавить механизмы для этого, но, похоже, отказался от этого из-за сложности.

Частично сложность возникает из-за совершенно разного поведения отдельных методов ввода, прежде чем вы даже рассмотрите несоответствие поведения между браузерами. Хороший пример - просто проверить, какие ключевые события вы получаете для набора поведения с японским, корейским и (традиционным и упрощенным) китайским. Браузеры не могут избежать этого, поскольку они реагируют на события, запускаемые непосредственно редакторами ввода.

Единственное, на что вы действительно можете положиться, это keyDown события, и даже тогда не так много в Opera и Firefox - Safari и IE предоставляют keyDown события во время композиции IME с charCode 229 и keyUp событием с charCode, соответствующим фактическая нажатая клавиша.

Есть событие textInput, но оно поддерживается только Safari (и через прокси-сервер Chrome также должен его поддерживать), но в любом случае оно не намного лучше стандартных событий: - /

person olliej    schedule 18.05.2009