OnKeyUp não dispara na ópera ao usar o layout cirílico
-
20-09-2019 - |
Pergunta
Estou lutando para entender por que o problema a seguir aparece.
Eu tenho uma caixa de entrada e quero anexar uma caixa de preenchimento automático a ela.
function input_set_autocomplete_to(obj)
{
if( obj.type != "text" ) { return; }
if( obj.getAttribute("rel") != "autocomplete" ) { return; }
obj.setAttribute("autocomplete", "off");
obj.setAttribute("uniqindex", Math.round(Math.random()*99999));
obj.onfocus = function() {
input_hide_autocompletes();
};
Este é o começo da função. Sem problemas aqui. Então eu conecto eventos onkeydown e onkeyup para que eu possa mostrar a caixa enquanto o usuário estiver digitando.
obj.onkeydown = function(e) {
console.log('x');
}
obj.onkeyup = function (e) {
console.log('z');
}
Até agora tudo bem. Tudo funciona em todos os navegadores (ou seja, FF, Chrome, Safari) no Windows e no Linux, eu recebo x, z em todos os keypress, exceto ópera no Linux se estou usando entrada cirílica (por exemplo Lá, o evento OnKeyUp nem sequer dispara.
O sistema que eu uso é o Ubuntu 9.04 com o Opera 10.10.
PS Ao digitar essa pergunta, experimentei em outra máquina com o ArchLinux, novamente com a Opera 10.10 e está funcionando bem. Além disso, um colega abandonou uma nota de que não está funcionando para ele também no MacOS X 10.6 com o Safari, mas não posso entrar em contato com ele para identificar a versão
Solução
De acordo com QuirksMode, O manuseio de keyup de ópera está quebrado. Você precisa usar o KeyPress no Opera.