33 votes

Quels événements DOM sont disponibles pour WebKit sur Android?

Je suis en train de construire une application web mobile ciblant les utilisateurs d'Android. J'ai besoin de savoir ce que DOM événements sont disponibles pour moi. J'ai été en mesure de faire le travail suivant, mais pas très fiable:

  • cliquez sur
  • passage de la souris
  • mousedown
  • mouseup
  • changement

Je n'ai pas été en mesure d'obtenir la suite du travail:

  • keypress
  • keydown
  • keyup

Personne ne sait le liste complète de ce qui est pris en charge et dans quels contextes (p. ex., est onchange uniquement disponible pour les entrées d'un formulaire?)? Je ne trouve pas de référence pour le présent sur Les Googles.

Merci!

Mise à jour: j'ai demandé la même question sur les développeurs Android liste. Je vais faire des tests un peu plus et vais poster mes résultats à la fois ici et là.

23voto

Andrew Hedges Points 11496

OK, c'est intéressant. Mon cas d'utilisation, c'est que j'ai une série de liens (A tags) sur un écran dans WebKit vue. Pour tester ce que les événements de l'espace disponible, à l'aide de jQuery 1.3.1, j'ai joint tous les cas listés sur cette page (même ceux qui n'ont pas de sens) pour les liens, puis utilisé le haut, le bas, et entrez les contrôles sur l'émulateur Android et de noter les événements qui ont tiré dans quelles circonstances.

Voici le code que j'ai utilisé pour attacher les événements, avec des résultats à suivre. Remarque, je suis à l'aide de "vivre" l'événement de liaison parce que pour mon application, l' A balises sont insérées de façon dynamique.

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

Voici comment il a secoué out:

  • Sur la première page de chargement avec rien mis en évidence (pas laid orange boîte de sélection autour de n'importe quel élément), à l'aide de la touche down pour sélectionner le premier élément, la suite des événements déclenchés (dans l'ordre): mouseover, mouseenter, mousemove, DOMFocusIn

  • Avec un élément sélectionné, passer à l'élément suivant en utilisant le bouton vers le bas, les événements suivants tirés (dans l'ordre): mouseout, mouseover, mousemove, DOMFocusOut, DOMFocusIn

  • Avec un élément sélectionné, en cliquant sur le bouton "enter", la suite des événements déclenchés (dans l'ordre): mousemove, mousedown, DOMFocusOut, mouseup, click, DOMActivate

Ce qui me frappe comme un tas d'aléatoire d'ordures. Et, qui est culotté IE événement (mouseenter) la fabrication d'un camée, puis en prenant le reste de la journée? Eh bien, au moins maintenant je sais ce que les événements à surveiller.

Ce serait formidable si d'autres veulent prendre mon code de test et de ne plus approfondie de courir à travers, peut-être en utilisant des éléments de formulaire, images, etc.

10voto

Oskar Austegard Points 2047

Étant donné qu'il s'agit du deuxième article Android + JavaScript le plus populaire sur SO (qui n'est qu'un triste commentaire sur l'état du développement Web ciblant la plate-forme Android), j'ai pensé qu'il pourrait être utile d'inclure un lien vers les résultats des tests tactiles de pkk sur http: //www.quirksmode.org/mobile/tableTouch.html et également http://www.quirksmode.org/mobile/ en général.

6voto

Roman Nurik Points 18632

À partir d'Android 1.5, les mêmes événements tactiles (début | déplacement | fin | annulation) que l'iPhone prend en charge fonctionnent également dans Android.

Un problème que j'ai trouvé est que les extrémités touchmove sont mises en file d'attente. Pas encore de solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X