问题描述:
在Node节点上使用onmouseover 与onmouseout事件监听函数时,将代码放到服务器上后在360浏览器中会出现页面闪动的bug(在本地则不会)。
解决办法:
一般使用这两个方法大部分都是为了实现元素的显示与隐藏,所以我后来使用了css的hover来解决此问题。
#navbar > ul > li:hover + div {
display: block;
}
#navbar > ul > li + div:hover {
display: block;
}
能用css解决的问题就不用js,不论是难易程度还是性能上的问题,显然css都是最优解。
问题出现的原因:
我为一个大节点添加了这两个事件监听函数来控制大节点的显示(onmouseover)与隐藏(onmouseout);
然后当鼠标进入大节点后,会正常触发onmouseover,使大节点显示;
但是碰到里面的子节点时,(所有)浏览器会执行这样一个过程:鼠标离开大节点进入子节点(时间很短);
这一过程会触发大节点的onmouseout(也就会使大节点隐藏),然后触发子节点的onmouseover;
然后发现子节点没有回调函数要执行,所以事件就会冒泡到大节点上并触发大节点的onmouseover(也就会使大节点显示);
所以大节点就会触发隐藏 --> 显示的效果(虽然时间很短),但360浏览器就会闪动,其他浏览器并不会,但也会有这个过程,只是页面不会闪动。