我正在构建面向Android用户的移动网络应用.我需要知道哪些DOM事件可供我使用.我已经能够完成以下工作,但不是非常可靠:
点击
鼠标移到
鼠标按下
鼠标松开
更改
我无法让以下工作:
按键
KEYDOWN
KEYUP
有没有人知道支持的内容的完整列表以及在什么情况下(例如,onchange只能用于表单输入?)?我在谷歌上找不到这方面的参考.
谢谢!
更新:我在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支持的相同触摸(开始|结束|取消)事件也在Android中运行.
我发现的一个问题是touchmove结束了排队.还没有解决方法.