问题如下:在一个容器里面(td)同时有onmousedown(用于实现层的拖动)、onclick(弹出A页面)和ondblclick(弹出B页面)事件;当不作任何处理的时候,onmousedown和ondblclick事件可以响应,但是onclick不能响应;由于onclick=onmousedown+onmouseup,据此通过记录onmousedown和onmouseup两个事件的坐标,如果两个坐标相等,则当做onclick来处理,这时候onmousedown和onclick可以响应,但ondblclick不能响应;另外,经本人验证(假设一个容器内同时拥有这些事件),onclick=onmousedown+onmouseup,ondblclick=onmousedown+onmouseup+onclick+onmouseup;请问有什么方法可以准确响应这几个事件?不是故意钻牛角尖,而是客户有这个需求!

解决方案 »

  1.   

    呵呵,我也觉得!补充一点:页面的每一个区域都有这些事件。我自己的方案是在页面上添加一个按钮,第一次点击进入支持拖动模式,第二次点击退出该模式;第一次点击前和第二次点击后支持onclick和ondblclick事件,奈何方案被否决了
      

  2.   

    正常来说是先发生mousedown事件,再onclick事件,在双击事件onmousedown和ondblclick事件可以响应,但是onclick不能响应,这应该是代码那里出了问题,得仔细检查代码,ondblclick都响应了 不可能不响应onclick提点建议
    最好先判断用户是click还是dblclick 免的双击的时候你还运行了单击
      

  3.   


    ondblclick=onmousedown+onmouseup+onclick+onmouseup,就是说如果onclick后面在规定时间内(传说中是0.3秒)还有一个onmouseup,那就是ondblclick,否则就是onclick,系统应该就是这样区分onclick和ondblclick的(个人经过验证以后的理解)。所以onmousedown和ondblclick事件可以响应,但是onclick不能响应,这是完全可能的!不过你的建议很好,其实说白了就是要自己去模拟系统区分onclick和ondblclick的过程,但应该怎么区分?这里正是我感到困难的地方
      

  4.   

    谢谢各位,现在用window.setTimeout解决这个问题了