javascript – Webkit在某些情况下不会触发

前端之家收集整理的这篇文章主要介绍了javascript – Webkit在某些情况下不会触发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我注意到在Webkit中< button>在单击期间将鼠标从按钮移动到/向按钮的子元素移动时,元素不会触发onclick事件.换句话说:当mousedown和mouseup事件不在同一元素上发生时 – 即使两者都是按钮的子元素.

单击/释放按钮文本的像素时,会发生相同的情况.

为了澄清我做了一个测试用例:http://jsfiddle.net/gx9B3/

它在FireFox中运行良好. Chrome 15和QtWebkit 4.7.1失败

有没有解决的办法?我需要专门针对Webkit的解决方案,因为我的项目仅针对此浏览器.

我可以根据JanKuča建议的方法解决这个问题(我接受的解决方案).需要进行一些额外的调整,特别是引入计时器以避免双击.看看我在JSFiddle上的全面工作解决方案:
http://jsfiddle.net/mwFQq/

最佳答案
您可以在document.body上设置一个mousedown监听器(以解决整个页面上的问题).您将检查mousedown事件是否源自HTMLButtonElement(或来自其任何子元素),如果是,则设置一个mouseup监听器(在按钮上,因此它不必冒泡太多)将检查目标mouseup事件的属性.如果它包含在按钮中并且与mousedown事件的目标不同,则会触发如下所示的单击事件:

var e = document.createEvent('Events');
e.initEvent('click',true,true);
button.dispatchEvent(e);

(仅对基于WebKit的浏览器执行此操作,以便您不会在其他浏览器中获得多个单击事件.或者您可以调用mousedown事件的preventDefault方法,因为它还应该阻止触发click事件.)

原文链接:/js/429490.html

猜你在找的JavaScript相关文章