2014-04-02 54 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