Safari: Есть ли способ обнаружить, что это конкретное событие Keydown запускало композицию?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Safari: Есть ли способ обнаружить, что это конкретное событие Keydown запускало композицию?

Сообщение Anonymous »

В отличие от других браузеров, Safari запускает события композиции в другом порядке. Рассмотрим код ниже и следующий сценарий: < /p>

Имея некоторый ввод, который запускает режим композиции (скажем, часть ввода китайского ввода) и нажмите «a». Заказ: < /p>

Код: Выделить всё

[keydown] key: a; currently in composing mode: false
[compositionstart] data:
[compositionupdate] data:
[keydown] key: 4; currently in composing mode: true
[compositionend] data: 呵
В Safari, однако, Keydown, который запускает CompositionEnd , произойдет позже, после того, как соответствующий композиция будет запускается , поэтому порядок будет:

Код: Выделить всё

[compositionstart] data:
[compositionupdate] data:
[keydown] key: a; currently in composing mode: true
[compositionend] data: 🤔
[keydown] key: 4; currently in composing mode: false
Мой вопрос: есть ли какой -нибудь способ определить, что это конкретное событие Keydown вызвало эту конкретную композицию? Запускаемый состав.

Код: Выделить всё

function log(message) {
out.appendChild(document.createTextNode(message))
out.appendChild(document.createTextNode('\n'))
}

function main() {
inp.addEventListener("keydown", function(evt) {
log(`[keydown] key: ${evt.key}; currently in composing mode: ${evt.isComposing}`);
});

inp.addEventListener("compositionstart", function(evt) {
log(`[compositionstart] data: ${evt.data}`);
});

inp.addEventListener("compositionstart", function(evt) {
log(`[compositionupdate] data: ${evt.data}`);
});

inp.addEventListener("compositionend", function(evt) {
log(`[compositionend] data: ${evt.data}`);
});

}

window.onload = main;< /code>
label {
display: block;
}< /code>

type here


log




Подробнее здесь: https://stackoverflow.com/questions/795 ... t-triggere
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»