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

Foi útil?

Solução

De acordo com QuirksMode, O manuseio de keyup de ópera está quebrado. Você precisa usar o KeyPress no Opera.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top