diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index fd5994925c1..fee67ec5e3b 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -1435,7 +1435,8 @@ impl Document { // https://w3c.github.io/uievents/#keys-cancelable-keys if keyboard_event.state == KeyState::Down && - keyboard_event.key.legacy_charcode() != 0 && + is_character_value_key(&(keyboard_event.key)) && + !keyboard_event.is_composing && cancel_state != EventDefault::Prevented { // https://w3c.github.io/uievents/#keypress-event-order @@ -2505,6 +2506,13 @@ impl Document { } } +fn is_character_value_key(key: &Key) -> bool { + match key { + Key::Character(_) | Key::Enter => true, + _ => false, + } +} + #[derive(MallocSizeOf, PartialEq)] pub enum DocumentSource { FromParser,