【发布时间】:2016-03-29 18:21:31
【问题描述】:
我有一个奇怪的问题!
在 div 元素上,我监听 mousedown、mouseup 和 click 事件。
但是在 Firefox 上,点击事件永远不会起作用! 在 Chromium 或 Trident(哇)上它工作得很好。 如果元素是按钮,它可以工作,但不能在 div 上。
<div>click me</div>
<script>
var div = document.querySelector('div');
function fn(e)
{
if(e.target === div)
div.innerHTML = 'event ' + e.type;
}
// work
div.addEventListener('mousedown',fn);
// work
div.addEventListener('mouseup',fn);
// nop !
div.addEventListener('click',fn);
// nothing !
document.addEventListener('click',fn,true);
</script>
【问题讨论】:
-
@AlexanderM。问题是
click事件没有被触发或被阻止。现在奇怪的是,如果你抛出错误,那么所有三个事件都会被触发。 Sample Fiddle -
有一个注册的bug。请检查这是否有帮助。
-
什么@Dr. Molle 的意思是,当您更改 div 的 html 时,节点正在更改,并且根据文档,如果在同一节点上触发 mouseDown、mouseUp,则触发单击事件。由于您正在更新节点,因此在 mouseUp 之后,它被视为新节点,这很奇怪!但是如果你不更新节点,它工作正常。
标签: javascript firefox click mousedown mouseup