【发布时间】:2017-07-11 12:23:03
【问题描述】:
当悬停在一个元素上然后刷新页面时(不移动鼠标):
- Chrome 不会在页面加载时触发 mouseenter 事件
- Firefox 会在页面加载时触发 mouseenter 事件
下面是一个示例 sn-p。要重现此问题,请将鼠标悬停在 div 上,然后刷新页面。在 Chrome 中,div 不包含“mouseenter”。在 Firefox 中,确实如此。
请注意,这在 Stacksn-ps 环境中不起作用,因为您需要先单击“运行 sn-p”。 JSFiddle:https://jsfiddle.net/9fu6cx5d/7/
let div = document.getElementById('my-div');
div.addEventListener('mouseenter', function () {
div.innerHTML = 'mouseenter';
});
#my-div {
width: 150px;
height: 150px;
background-color: #aaaaaa;
}
<div id="my-div">
</div>
哪个浏览器的行为正确?我如何才能解决行为上的差异,或者至少让它们的行为相同?
Chrome 版本:59.0.3071.115(官方版本)(64 位)
Firefox 版本:54.0(64 位)
【问题讨论】:
-
如果您将焦点放在“运行”按钮上,将鼠标移动到下方区域,然后使用回车键激活,则可以在此处演示该行为。
-
The mouseenter event is fired when a pointing device (usually a mouse) is moved over the element that has the listener attached.根据文档,Chrome 是具有正确行为的那个。至于解决方法,也许可以在准备好的文档中尝试一下? -
我在 React 组件中遇到了这个问题。 mouseenter 导致重新渲染,这导致 mouseenter 事件,等等循环和崩溃的应用程序。有更新吗?如何防止页面重新加载触发 mouseenter 事件?
标签: javascript google-chrome firefox dom-events