代码之家  ›  专栏  ›  技术社区  ›  Andrew Hedges

Android上的WebKit提供哪些DOM事件?

  •  31
  • Andrew Hedges  · 技术社区  · 15 年前

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

    • 点击
    • 鼠标开关
    • 鼠标按下
    • 松开鼠标
    • 改变

    我无法让以下内容发挥作用:

    • 按键
    • 键盘按下
    • 弹起

    是否有人知道支持的内容以及在什么上下文中的完整列表(例如,OnChange是否仅可用于表单输入?)我在谷歌上找不到这方面的参考资料。

    谢谢!

    更新: 我问 the same question on the Android developers list . 我将做更多的测试,并在这里和那里发布我的结果。

    3 回复  |  直到 12 年前
        1
  •  20
  •   Andrew Hedges    15 年前

    好的,这很有趣。我的用例是我有一系列链接( A 标签)在WebKit视图的屏幕上。为了测试可用的事件区域,使用jquery 1.3.1,我附加了上面列出的每个事件 this page (即使是那些没有意义的链接)然后使用Android模拟器上的向上、向下和输入控件,并记录在哪种情况下触发的事件。

    这是我用来附加事件的代码,结果如下。注意,我正在使用“Live”事件绑定,因为对于我的应用程序, 标签是动态插入的。

    $.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 , 鼠标开关 , 移动鼠标 , DOMFocusOut , 多姆库辛

    • 选中某个项目后,单击“Enter”按钮,将触发以下事件(按顺序): 移动鼠标 , mousedown , 多方聚焦 , mouseup , click , DOMActivate

    我觉得这是一堆随机的垃圾。还有,谁才是那件厚颜无耻的事( 鼠标器 )拍个小品,然后休息一天?哦,好吧,至少现在我知道该看什么比赛了。

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

        2
  •  9
  •   Oskar Austegard zaph    14 年前

    由于这是第二个最受欢迎的Android+javascript帖子(这只是针对Android平台的Web开发状态的一个悲伤的评论),我认为这可能是值得的,包括链接到pkk的触摸事件测试结果 http://www.quirksmode.org/mobile/tableTouch.html 而且 http://www.quirksmode.org/mobile/ 一般来说。

        3
  •  5
  •   aamiri    12 年前

    从Android 1.5开始,iPhone支持的触摸(开始移动结束取消)事件也在Android中起作用。

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