簡體   English   中英

滾動下面的頁面時,為什么會觸發mouseenter事件?

[英]Why is mouseenter event triggered when page below is scrolled?

我注意到當鼠標未被觸摸但光標下方的頁面滾動時,會觸發mouseenter事件。

看看這個小提琴: http : //jsfiddle.net/F3EwW/

重現步驟:

  1. 點擊一個li
  2. 使用向上/向下箭頭鍵滾動項目
  3. 當下面的li滾動到視圖時,您會注意到mouseenter事件被觸發。

注意:要注意此行為,請確保鼠標光標在li上方,並且保持不變。

最初,我將其作為默認行為接受,並繼續進行處理以在我的代碼中進行處理。.但后來我感到好奇,並想在任何我找不到的文檔中驗證此行為。

有人知道規范或任何真實網頁中的任何地方都記錄了此行為嗎?

我查找了w3spec事件滾動鼠標事件順序 ,但是找不到任何有關此的信息。

同樣, mouseenter的規格說明如下:

當將指針設備移動到元素或其后代元素之一的邊界上時,用戶代理必須調度此事件。 此事件類型與鼠標懸停類似,但不同之處在於它不會冒泡,並且當指針設備從一個元素移動到其后代元素之一的邊界時,不得分派。

在Chrome中,您也會注意到mouseover也會被觸發。 我已經對此發布了一個問題和一個錯誤報告

您意識到自己有$('li').mouseenter(function () { ?這會導致mouseenter事件綁定到此li元素的每個元素,因此當您使用上下鍵滾動和鼠標仍在ul中,並不斷輸入新的li。這不是 鼠標輸入新元素時 的意外功能

您正在尋找的行為更多是這樣的:

$("element").bind("mousemove mouseenter", function(event) {
    //...
});

另外,您還需要認識到DOM可以理解鼠標相對於文檔的移動,而不是像操作系統那樣,可以理解鼠標在屏幕上的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM