我正在寫一個拖放處理程序,並希望將eventListeners
設置爲最高級別 - 我推測這將是body
。然而,我注意到在example at MDN中,他們將聽衆設置爲document
而不是document.body
,這導致我問爲什麼這會更可取,並且一般來說,爲什麼我會選擇聽者與其他人相關(以及他們是否都支持相同的聽衆)?addEventListener - 附加到文檔與document.body
那麼我什麼時候使用document.body.addeventListener()
與document.addEventListener()
?
UPDATEThis SO question地址時發生的事件結合到document
與在element
水平。很有幫助。
UPDATE2有趣的是,當所有拖放監聽器都設置爲document.addEventListener()
時,Firefox會掛起拖動(Chrome不會)。當我將它更改爲document.body.addEventListener()
爲dragEnter, dragOver, dragLeave, drop
它一切正常。看起來像dragStart
想要在document
然而。
嘗試O讀這篇文章https://www.sitepoint.com/jquery-body-on-document-on/ – Tareq
_「我寫一個拖放處理程序」 _爲什麼你不重視處理程序到發生拖放的元素? – guest271314
@ guest271314 - 如果我有1000個可以拖放的元素,我可以將6個eventListeners'(dragStart,dragEnter,dragOver,dragLeave,drop,dragStop)'附加到所有1000個元素,或者將這些元素附加到'document '並處理如何處理事件'target'。因爲無論如何我必須處理'target',所以擁有一個全局處理器似乎更有效率。 – mseifert