2014-04-02 112 views
2

Google Chrome中的非常奇怪的行为!调整窗口时在Chrome中触发的Mouseenter事件

我得到了一个网格div,然后在每个网格上添加一个eventListenner,用于mouseenter事件。在我的演示代码中,当事件被触发时,div得到opacity:0.2

$(".target_div_class").on("mouseenter", [my action ...]) 

那么,这是工作在除谷歌浏览器以外的每个浏览器。

要在Chrome中重现奇怪的行为,请将鼠标指针放在网格的前方,然后开始快速调整主浏览器窗口的大小,即使没有鼠标滚动,也会看到某些div变得不透明 - 过!

我做错了什么,是Chrome不喜欢的特殊jQuery事件吗?

感谢的

拉里

编辑-1-

我想我明白为什么有些div接收该事件。

这似乎的是,当我在边界点击(左或右)的浏览器,Chrome浏览器保持鼠标的位置X的轨迹和Y.

然后,当慢慢扩大浏览器的宽度,任何div这在此“开始鼠标位置”下接收事件。 如果在调整大小之前拿起笔并将其放置在鼠标起始位置,则首先浏览器宽度很薄时再重现非常简单,然后再慢慢展开它。很明显。非常非常奇怪。

编辑-2-

此行为是仅在操作系统windows 8,我只是测试它在Mac上,并没有问题!

嗯,我已经对夫妇的网站测试这种行为,像这样的:https://devart.withgoogle.com/

由谷歌的专业,我想,和不寻常的举止再次发生,我会试图找到如何联系谷歌浏览器团队...

回答

0

我不相信Chrome完全支持mouseenter/mouseleave。 Chrome只能模拟这些功能,与IE不同。

但是,只有当有人试图重新调整窗口的大小时,浏览器边缘实际移动并且鼠标暂时进入页面时才会出现问题。所以,这不是一种无理的行为。你总是可以尝试用

$(window).resize(function() { 
    //some code to reset opacity 
}); 
+0

千住,好了,我已经中庸之道进行测试的“鼠标悬停”,而不是‘的mouseenter’有是一样的行为。考虑到你的答案,我会尽量找到一个解决方法,但它就像一个非常基本的东西。有时候,即使我不很快调整窗口大小,也会触发事件.... – larry

0

修复看看这有助于

$(".target_div_class").on("mouseenter", function(){ 
event.stopPropagation(); 
    //your code 
}); 
+1

有关事件对象和stopPropagation()函数的一些详细信息,以及特别指向文档的链接对于此答案是一个很好的改进。 – StuperUser

+0

@Abhishek Verma,没有相同的行为,看到我编辑的第一个问题,我发现如何确定div接收事件!这非常奇怪 – larry

相关问题