我注意到在Webkit中 the <button>
元素不会触发onclick
单击期间鼠标从按钮的子元素移动到按钮的子元素时发生的事件。换句话说:当mousedown
and mouseup
事件不会发生在同一元素上 - 即使两者都是按钮的子元素。
单击/松开/松开时也会发生同样的情况pixels按钮的text.
为了澄清我做了一个testcase: http://jsfiddle.net/gx9B3/ http://jsfiddle.net/gx9B3/
它在 FireFox 中运行良好。在 Chrome 15 和 QtWebkit 4.7.1 中失败
有没有解决的办法?我需要一个解决方案专门针对 Webkit因为我的项目仅针对此浏览器。
Solution
我可以根据建议的方法解决这个问题Jan Kuča(我接受的解决方案)。一些额外的调整是必要的,特别是引入计时器以避免双击。看看我在 JSFiddle 上的完整工作解决方案:http://jsfiddle.net/mwFQq/ http://jsfiddle.net/mwFQq/
你可以设置一个mousedown
监听器开启document.body
(修复整个页面的问题)。您将检查是否mousedown
事件起源于HTMLButtonElement
(或来自它的任何子元素),如果是这样,您设置了一个mouseup
监听器(在按钮上,这样它就不必冒太多),它将检查target
的财产mouseup
事件。如果它包含在按钮中并且与按钮不同target
of the mousedown
事件,你触发一个click
像这样的事件:
var e = document.createEvent('Events');
e.initEvent('click', true, true);
button.dispatchEvent(e);
(仅对基于 WebKit 的浏览器执行此操作,这样您就不会在其他浏览器中收到多个单击事件。或者您可以调用preventDefault
的方法mousedown
事件,因为它还应该防止触发click
event.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)