在mousedown处理程序中更改可见性属性时,不会在Safari或Firefox中触发单击处理程序

时间:2016-03-15 01:15:00

标签: javascript css google-chrome firefox safari

我在包含其他<div>的{​​{1}}上注册了一个点击处理程序和一个鼠标按下处理程序。默认情况下,内部<div>设置为<div>。在visibility: hidden处理程序中,mousedown设置为visibility

问题是在Safari和Firefox中,点击处理程序在您第一次点击外部 visible时不会触发。在Chrome中,点击处理程序会触发。

我做了一个简化的测试用例:https://jsbin.com/hequku/edit?html,css,js,output

有趣的是,如果不操纵<div>属性来操纵visibility属性,跨浏览器的差异就会消失。

我想弄清楚的是:

  • 浏览器之间的这种情况有望不同吗?如果没有,那么符合规范的行为是什么?
  • 我是否遗漏了opacityclick处理程序应该和不应该做的事情?

2 个答案:

答案 0 :(得分:0)

&#39;知名度:隐藏&#39;适用于尚未或不再有的内容。相关。 所以我猜浏览器不会针对不相关的内容触发点击事件。 尝试使用&#39; display:none&#39;代替。

答案 1 :(得分:0)

这个W3学校链接讨论visibility:hidden如果仍然占用空间的方式。我之前遇到过这个问题,它与某些浏览器如何将hidden视为禁用有关;因此,为什么你的活动不会开火。使用opacity是解决此问题的方法。
我认为visibility:hidden上没有触发的事件是正确的答案。另外,请查看this问题和答案。