我正在构建一个针对 Android 用户的移动网络应用程序。我需要知道我可以使用哪些 DOM 事件。我已经能够完成以下工作,但不是非常可靠:
- 点击
- 鼠标移到
- 鼠标按下
- mouseup
- 改变
我无法使以下工作:
- 按键
- 按键
- 键位
有谁知道支持什么以及在什么情况下的完整列表(例如,onchange 是否仅可用于表单输入?)?我在 Google 上找不到这方面的参考资料。
谢谢!
更新:我在 Android 开发者列表上问了同样的问题。我会做更多的测试,并会在这里和那里发布我的结果。
我正在构建一个针对 Android 用户的移动网络应用程序。我需要知道我可以使用哪些 DOM 事件。我已经能够完成以下工作,但不是非常可靠:
我无法使以下工作:
有谁知道支持什么以及在什么情况下的完整列表(例如,onchange 是否仅可用于表单输入?)?我在 Google 上找不到这方面的参考资料。
谢谢!
更新:我在 Android 开发者列表上问了同样的问题。我会做更多的测试,并会在这里和那里发布我的结果。
好的,这很有趣。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
) 来客串,然后休息一天?哦,好吧,至少现在我知道要注意什么事件了。
如果其他人想要使用我的测试代码并进行更彻底的运行,可能会使用表单元素、图像等,那就太好了。
由于这是 SO 上第二受欢迎的 Android + JavaScript 帖子(这只是对针对 Android 平台的 Web 开发状态的悲哀评论),我认为在 http 上包含指向 pkk 的触摸事件测试结果的链接可能是值得的: //www.quirksmode.org/mobile/tableTouch.html和http://www.quirksmode.org/mobile/一般。
从 Android 1.5 开始,iPhone 支持的相同 touch(start|move|end|cancel) 事件也可以在 Android 中工作。
我发现的一个问题是 touchmove 结束排队。还没有解决方法。