Frage

Ich baue eine mobile Web-App-Targeting Android-Nutzer. Ich muss wissen, was DOM-Ereignisse mir zur Verfügung stehen. Ich konnte die folgende Arbeit machen, aber nicht sehr zuverlässig:

  • Klicken Sie auf
  • Mouseover
  • mousedown-
  • mouseup
  • Änderung

Ich habe nicht in der Lage gewesen, die folgende Arbeit zu bekommen:

  • keypress
  • keydown
  • keyup

Kennt jemand die vollständige Liste von dem, was unterstützt wird und in welchen Kontexten (beispielsweise ist Onchange nur Eingaben zu bilden?)? Ich kann nicht eine Referenz für diesen auf dem Googles finden.

Danke!

Update: Ich fragte die gleiche Frage auf der Android-Entwickler-Liste . Ich werde einige Tests tun und meine Ergebnisse veröffentlichen hier wie dort.

War es hilfreich?

Lösung

OK, das ist interessant. Mein Anwendungsfall ist, dass ich eine Reihe von Links (A Tags) auf einem Bildschirm in einem WebKit Blick. Um zu testen, welche Ereignisse Bereich zur Verfügung, mit jQuery 1.3.1, ich jedes Ereignis verbunden aufgelistet auf dieser Seite (auch diejenigen, die keinen Sinn machen), dann die oben verwendet, um die Links, unten, und geben Sie Steuerelemente auf dem Android-Emulator und festgestellt, welche unter welchen Umständen gefeuert Ereignisse.

Hier ist der Code, den ich verwendet, um die Ereignisse anhängen, mit Ergebnissen zu folgen. Beachten Sie, ich bin mit „live“ Ereignisbindung, weil für meine Anwendung werden die A Tags eingefügt dynamisch.

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

Hier ist, wie es schüttelt:

  • Auf den ersten Laden der Seite mit nichts markiert (keine hässlichen Orange Auswahlfeld um ein beliebiges Element), Taste nach unten auf das erste Element auszuwählen, feuerte die folgenden Ereignisse (in Reihenfolge): mouseover, mouseenter, mousemove, DOMFocusIn

  • Mit einem Element ausgewählt, zum nächsten Punkt bewegt die Abwärtstaste, feuerten die folgenden Ereignisse (in Reihenfolge): mouseout, mouseover, mousemove, DOMFocusOut, DOMFocusIn

  • Mit ein Element ausgewählt, die "Enter" -Taste klicken, feuerte die folgenden Ereignisse (in Reihenfolge): mousemove, mousedown, DOMFocusOut, mouseup, click, DOMActivate

Das erscheint mir als eine Reihe von zufälligen Müll. Und wer ist das freche IE-only-Ereignis (mouseenter) einen Cameo-Auftritt macht, dann den Rest des Tages frei nehmen? Na ja, zumindest jetzt weiß ich, welche Ereignisse zu beobachten.

Es wäre toll, wenn andere wollen meinen Testcode nehmen und einen gründlichere Durchlauf tun, vielleicht Formularelemente verwenden, Bilder etc.

Andere Tipps

Da dies der zweite beliebtestene Android + JavaScript Beitrag auf SO ist (das ist nur ein trauriger Kommentar über den Stand der Web-Entwicklung ist die Android-Plattform-Targeting), dachte ich, es mit einem Link zu PKK-Berührungsereignistestergebnis sinnvoll sein kann unter http://www.quirksmode.org/mobile/tableTouch.html und auch < a href = "http://www.quirksmode.org/mobile/" rel = "noreferrer"> http://www.quirksmode.org/mobile/ im allgemeinen.

Ab Android 1.5, die gleiche Note (Start | Umzug | Ende | cancel). Ereignisse, die die iPhone Arbeit in Android unterstützt auch

Ein Problem, das ich fand war, dass Berührungsbewegungsende erhalten Warteschlange gestellt. Keine Abhilfe vor.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top