web-dev-qa-db-ja.com

AndroidのWebKitで利用できるDOMイベントは何ですか?

Androidユーザーを対象とするモバイルWebアプリを構築しています。利用可能なDOMイベントを知る必要があります。次の作業を行うことができましたが、それほど確実ではありません。

  • クリック
  • マウスオーバー
  • マウスダウン
  • マウスアップ
  • 変化する

以下を機能させることができませんでした。

  • キープレス
  • キーダウン
  • キーアップ

サポートされている内容とコンテキストの完全なリストを知っている人はいますか(例:onchangeはフォーム入力にのみ使用できますか?) Googleでこれに関するリファレンスを見つけることができません。

ありがとう!

更新:質問しました Android開発者リスト と同じ質問です。さらにテストを行って、私の結果をあちこちに投稿します。

32
Andrew Hedges

OK、これは面白いです。私の使用例は、WebKitビューの画面に一連のリンク(Aタグ)があることです。使用可能なイベント領域をテストするために、jQuery 1.3.1を使用して、 このページ (意味のないものも含む)にリストされているすべてのイベントをリンクに添付し、上、下、および入力を使用しましたAndroidエミュレータを制御し、どの状況でどのイベントが発生したかを記録しました。

以下は、イベントをアタッチするために使用したコードとその結果です。アプリケーションではAタグが動的に挿入されるため、「ライブ」イベントバインディングを使用していることに注意してください。

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

これがどのように発生したかを次に示します。

  • 何も強調表示されていない最初のページの読み込み時(アイテムの周りにオレンジ色の選択ボックスがない)、下ボタンを使用して最初のアイテムを選択すると、次のイベントが(順番に)発生します:mouseovermouseentermousemoveDOMFocusIn

  • アイテムを選択し、下ボタンを使用して次のアイテムに移動すると、次のイベントが(順番に)発生します:mouseoutmouseovermousemoveDOMFocusOutDOMFocusIn

  • アイテムを選択して[Enter]ボタンをクリックすると、次のイベントが(順番に)発生します:mousemovemousedownDOMFocusOutmouseupclickDOMActivate

これはランダムなゴミの束として私を襲います。そして、その生意気なIEのみのイベント(mouseenter)がカメオを作って、残りの日を休みにするのは誰ですか?まあ、少なくとも今、私はどのイベントを監視するべきか知っています。

他の人が私のテストコードを取得して、フォーム要素や画像などを使用して、より徹底的に実行したい場合は、すばらしいでしょう。

22
Andrew Hedges

これは2番目に人気のあるAndroid + SOへのJavaScriptの投稿です(Androidプラットフォームを対象としたWeb開発の状況についての悲しい解説です)。 http://www.quirksmode.org/mobile/tableTouch.html にpkkのタッチイベントテスト結果へのリンクを含めることも価値があるかもしれないと思いました http:// www。 quirksmode.org/mobile/ 全般。

10
Oskar Austegard

Android 1.5以降、iPhoneがサポートする同じtouch(start | move | end | cancel)イベントがAndroidでも機能します。

私が見つけた1つの問題は、タッチムーブエンドがキューに入れられることです。まだ回避策はありません。

6
Roman Nurik