33

我正在构建一个针对 Android 用户的移动网络应用程序。我需要知道我可以使用哪些 DOM 事件。我已经能够完成以下工作,但不是非常可靠:

  • 点击
  • 鼠标移到
  • 鼠标按下
  • mouseup
  • 改变

我无法使以下工作:

  • 按键
  • 按键
  • 键位

有谁知道支持什么以及在什么情况下的完整列表(例如,onchange 是否仅可用于表单输入?)?我在 Google 上找不到这方面的参考资料。

谢谢!

更新:在 Android 开发者列表上问了同样的问题。我会做更多的测试,并会在这里和那里发布我的结果。

4

3 回答 3

23

好的,这很有趣。A我的用例是我在 WebKit 视图的屏幕上有一系列链接(标签)。为了测试可用的事件区域,使用 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);
    });
});

以下是它的震动方式:

  • 在第一页加载时没有突出显示(任何项目周围都没有丑陋的橙色选择框),使用向下按钮选择第一个项目,触发以下事件(按顺序):mouseover, mouseenter, mousemove,DOMFocusIn

  • 选择一个项目,使用向下按钮移动到下一个项目,触发以下事件(按顺序):mouseout, mouseover, mousemove, DOMFocusOut,DOMFocusIn

  • 选择一个项目后,单击“输入”按钮,将触发以下事件(按顺序):mousemove, mousedown, DOMFocusOut, mouseup, click,DOMActivate

这让我觉得是一堆随机垃圾。而且,谁是那个厚颜无耻的仅限 IE 的活动 ( mouseenter) 来客串,然后休息一天?哦,好吧,至少现在我知道要注意什么事件了。

如果其他人想要使用我的测试代码并进行更彻底的运行,可能会使用表单元素、图像等,那就太好了。

于 2009-01-24T21:51:28.940 回答
10

由于这是 SO 上第二受欢迎的 Android + JavaScript 帖子(这只是对针对 Android 平台的 Web 开发状态的悲哀评论),我认为在 http 上包含指向 pkk 的触摸事件测试结果的链接可能是值得的: //www.quirksmode.org/mobile/tableTouch.htmlhttp://www.quirksmode.org/mobile/一般。

于 2010-11-03T15:39:05.387 回答
6

从 Android 1.5 开始,iPhone 支持的相同 touch(start|move|end|cancel) 事件也可以在 Android 中工作。

我发现的一个问题是 touchmove 结束排队。还没有解决方法。

于 2009-05-07T07:12:26.060 回答