Domanda

Sto creando un'app Web mobile destinata agli utenti Android. Devo sapere quali eventi DOM sono disponibili per me. Sono stato in grado di fare il seguente lavoro, ma non in modo estremamente affidabile:

  • click
  • passaggio del mouse
  • mousedown
  • mouseup
  • cambia

Non sono stato in grado di far funzionare quanto segue:

  • pressione del tasto
  • keydown
  • keyup

Qualcuno conosce l'elenco completo di ciò che è supportato e in quali contesti (ad esempio, onchange è disponibile solo per formare input?)? Non riesco a trovare un riferimento per questo su The Googles.

Grazie!

Aggiornamento: ho chiesto a il stessa domanda nell'elenco degli sviluppatori Android . Farò altri test e pubblicherò i miei risultati qui e là.

È stato utile?

Soluzione

OK, questo è interessante. Il mio caso d'uso è che ho una serie di collegamenti ( A ) su uno schermo in una vista WebKit. Per testare l'area eventi disponibile, utilizzando jQuery 1.3.1, ho allegato tutti gli eventi elencati in questa pagina (anche quelle che non hanno senso) per i collegamenti, quindi ha usato i comandi su, giù e inserisci i controlli sull'emulatore Android e ha notato quali eventi sono stati attivati ??in quali circostanze.

Ecco il codice che ho usato per allegare gli eventi, con i risultati da seguire. Nota, sto usando " live " associazione eventi perché per la mia applicazione, i tag A vengono inseriti dinamicamente.

$.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);
    });
});

Ecco come si è scrollato di dosso:

  • Al caricamento della prima pagina senza evidenziare nulla (nessuna brutta casella di selezione arancione attorno a qualsiasi elemento), utilizzando il pulsante giù per selezionare il primo elemento, vengono attivati ??i seguenti eventi (in ordine): mouseover , mouseenter , mousemove , DOMFocusIn

  • Con un elemento selezionato, passando all'elemento successivo utilizzando il pulsante giù, i seguenti eventi sono stati attivati ??(in ordine): mouseout , mouseover , mousemove , DOMFocusOut , DOMFocusIn

  • Con un elemento selezionato, facendo clic su " inserisci " pulsante, i seguenti eventi sono stati attivati ??(in ordine): mousemove , mousedown , DOMFocusOut , mouseup , fai clic su , DOMActivate

Questo mi sembra un mucchio di immondizia casuale. E chi è quell'evento sfacciato solo per IE ( mouseenter ) che fa un cameo, poi si prende il resto della giornata? Vabbè, almeno ora so quali eventi guardare.

Sarebbe bello se gli altri volessero prendere il mio codice di prova e fare un giro più approfondito, magari usando elementi del modulo, immagini, ecc.

Altri suggerimenti

Dato che questo è il secondo post Android + JavaScript più popolare su SO (che è solo un triste commento sullo stato dello sviluppo web destinato alla piattaforma Android), ho pensato che valesse la pena includere un link ai risultati del test di eventi touch di pkk all'indirizzo http://www.quirksmode.org/mobile/tableTouch.html e anche < a href = "http://www.quirksmode.org/mobile/" rel = "noreferrer"> http://www.quirksmode.org/mobile/ in generale.

A partire da Android 1.5, gli stessi eventi touch (start | move | end | cancel) supportati da iPhone funzionano anche su Android.

Un problema che ho riscontrato è che le estremità del touchmove vengono messe in coda. Ancora nessuna soluzione alternativa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top