Pergunta

Estou construindo uma aplicação web móvel direcionada aos usuários de Android. Eu preciso saber o que estão disponíveis para mim eventos DOM. Eu tenho sido capaz de fazer o seguinte trabalho, mas não terrivelmente confiável:

  • clique
  • mouseover
  • mousedown
  • mouseup
  • mudança

Eu não tenho sido capaz de obter o seguinte para o trabalho:

  • keypress
  • keydown
  • keyup

Alguém sabe a lista completa do que é suportado e em que contextos (por exemplo, é onchange só está disponível para formar entradas?)? Não consigo encontrar uma referência para isso no Googles.

Obrigado!

Update: eu pedi o mesma pergunta na lista de desenvolvedores Android . Eu vou estar fazendo mais alguns testes e irá postar meus resultados, tanto aqui como lá.

Foi útil?

Solução

OK, isso é interessante. Meu caso de uso é que eu tenho uma série de links (tags A) em uma tela em uma visão WebKit. Para testar o que eventos área disponível, usando jQuery 1.3.1, me acompanha todos os eventos listados em este página (mesmo aqueles que não fazem sentido) para os links usados ??então os controles para cima, para baixo, e entram no Android emulador e observou que os eventos disparados em que circunstâncias.

Aqui está o código que usei para anexar os eventos, com resultados a seguir. Note, eu estou usando "ao vivo" de ligação, porque para o meu pedido, as tags A são inseridas dinamicamente evento.

$.each([
    'blur',
    'change',
    'click',
    'contextmenu',
    'copy',
    'cut',
    'dblclick',
    'error',
    'focus',
    'keydown',
    'keypress',
    'keyup',
    'mousedown',
    'mousemove',
    'mouseout',
    'mouseover',
    'mouseup',
    'mousewheel',
    'paste',
    'reset',
    'resize',
    'scroll',
    'select',
    'submit',

    // W3C events
    'DOMActivate',
    'DOMAttrModified',
    'DOMCharacterDataModified',
    'DOMFocusIn',
    'DOMFocusOut',
    'DOMMouseScroll',
    'DOMNodeInserted',
    'DOMNodeRemoved',
    'DOMSubtreeModified',
    'textInput',

    // Microsoft events
    'activate',
    'beforecopy',
    'beforecut',
    'beforepaste',
    'deactivate',
    'focusin',
    'focusout',
    'hashchange',
    'mouseenter',
    'mouseleave'
], function () {
    $('a').live(this, function (evt) {
        alert(evt.type);
    });
});

Aqui está como ele sacudiu:

  • Em primeiro carregamento da página com nada realçado (nenhuma caixa de selecção laranja feio em torno de qualquer item), usando o botão para baixo para selecionar o primeiro item, os seguintes eventos disparados (em ordem): mouseover, mouseenter, mousemove, DOMFocusIn

  • Com um item selecionado, movendo-se para o próximo item utilizando o botão para baixo, os seguintes eventos disparados (em ordem): mouseout, mouseover, mousemove, DOMFocusOut, DOMFocusIn

  • Com um item selecionado, clique no botão "enter", os seguintes eventos disparados (em ordem): mousemove, mousedown, DOMFocusOut, mouseup, click, DOMActivate

Isso me parece um monte de lixo aleatório. E, quem é aquele atrevido evento IE-only (mouseenter) fazendo um cameo, em seguida, tendo o resto do dia de folga? Oh bem, pelo menos agora eu sei o que os eventos para assistir.

Seria ótimo se outros querem tomar o meu código de teste e fazer uma corrida mais completa através, talvez usando elementos de formulário, imagens, etc.

Outras dicas

Uma vez que este é o segundo mais popular pós Android + JavaScript no SO (que é apenas um triste comentário sobre o estado de desenvolvimento web para a plataforma Android), eu pensei que ele pode ser útil incluindo um link para os resultados dos testes de evento de toque do PKK em http://www.quirksmode.org/mobile/tableTouch.html e também < a href = "http://www.quirksmode.org/mobile/" rel = "noreferrer"> http://www.quirksmode.org/mobile/ em geral.

A partir do Android 1.5, o mesmo toque (início | movimento | final | cancelar). Eventos que o iPhone suporta o trabalho em Android, bem

Um problema que eu encontrei foi que termina TouchMove ficar na fila. Ainda não tem solução.

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