Javascript a:active vs mousedown事件预防默认值() 案件 我们有一个 问题

Javascript a:active vs mousedown事件预防默认值() 案件 我们有一个 问题,javascript,css,firefox,cross-browser,css-selectors,Javascript,Css,Firefox,Cross Browser,Css Selectors,在W3C上没有深入的描述,必须考虑什么是活动的,什么时候 但除FF之外的所有浏览器(可能不是全部?)都会首先通过CSS引擎处理鼠标向下,并将元素呈现为:active。这似乎是一个很长时间的问题,我在FF3.6、8.0、13.0中测试了这个案例——所有版本的行为都完全相同 那么,在这种情况下,浏览器的正确行为是什么?没有“正确的行为”。这取决于浏览器的实现,不应该依赖它。这被称为。在软件工程中,不应依赖未定义的行为,因为它没有真实的文档,结果也不可验证 CSS没有定义哪些元素可能处于上述状态[ps

在W3C上没有深入的描述,必须考虑什么是活动的,什么时候

但除FF之外的所有浏览器(可能不是全部?)都会首先通过CSS引擎处理鼠标向下,并将元素呈现为
:active
。这似乎是一个很长时间的问题,我在FF3.6、8.0、13.0中测试了这个案例——所有版本的行为都完全相同


那么,在这种情况下,浏览器的正确行为是什么?

没有“正确的行为”。这取决于浏览器的实现,不应该依赖它。这被称为。在软件工程中,不应依赖未定义的行为,因为它没有真实的文档,结果也不可验证

CSS没有定义哪些元素可能处于上述状态[pseudo classes::hover、:active和:focus],或者如何输入和离开这些状态。脚本可能会改变元素是否对用户事件做出反应,不同的设备和UAs[浏览器]可能有不同的指向或激活元素的方式。 -


对web开发人员的一个常见误解是,
:hover
:active
:focus
是各自JavaScript事件的直接CSS对应者,因此他们应该在两种语言中携手合作。这根本不是事实。碰巧的是,CSS不仅定义了一个
:active
伪类,当鼠标落在某个元素上时可以应用该类,而且JavaScript还具有
mousedown
mouseup
事件。这并不意味着伪类状态依赖于事件,也不意味着事件依赖于或触发伪类状态。@andrew martinez:我已经阅读了w3c,但我错过了这一部分。谢谢你指出这一点。请注意,当你点击它时,它是红色的,但它不会保持红色