JavaScript中是否有一種方法來獲取頁面上所有具有事件綁定的元素。 我知道你可以得到所有事件的一個特定的事件,但有沒有一種方式的所有元素?JavaScript:獲取綁定事件的所有元素
2
A
回答
1
謝謝大家的幫助。我發現這個很棒的代碼片斷循環了頁面上的所有元素,並將每個綁定了事件的元素添加到數組中。
var items = Array.prototype.slice.call(
document.querySelectorAll('*')
).map(function(element) {
var listeners = getEventListeners(element);
return {
element: element,
listeners: Object.keys(listeners).map(function(k) {
return { event: k, listeners: listeners[k] };
})
};
}).filter(function(item) {
return item.listeners.length;
});
0
正如評論中所建議的,你可以在chrome開發工具上使用getEventListeners(document)
,但是如果你想在你的代碼中使用它,一個可能的解決方案是使用custon函數來註冊事件並獲得一系列元素事件發生了。
代碼不準備使用,只是一個例子
let elements = [];
function addEventListener(elem, event, cb) {
elem.addEventListener(event, cb);
elements.push(elem);
}
你當然需要時被刪除事件要刪除的元素。
如果你不能控制所有註冊事件的代碼(這是很常見的),你可以使用猴子路徑的Node.prototype.addEventListener
函數。這不是推薦的(你可以閱讀更多here)。但它是一種可能性...
相關問題
- 1. 獲取綁定事件的元素
- 2. 獲取元素的所有jQuery/JavaScript事件訂閱
- 3. JavaScript Elementtree獲取特定元素之間的所有元素
- 4. jQuery'on'沒有綁定元素的事件
- 5. 從ClassName獲取的所有元素中獲取特定元素?
- 6. 觸發綁定到元素的所有jQuery事件
- 7. jquery事件綁定到div中的所有文本元素
- 8. 如何綁定DOM元素上的所有事件?
- 9. 獲取元素綁定
- 10. 獲取視圖事件在回調中綁定的元素
- 11. 一旦元素被加載,Javascript綁定元素事件
- 12. 有沒有辦法在javascript中獲取所有事件監聽器綁定?
- 13. 刪除元素,但保持所有數據和事件綁定
- 14. 將事件綁定到所有「選擇」下拉列表元素
- 15. 獲取視圖不綁定所有子元素
- 16. 獲取表單中所有選定元素的所有選定元素
- 17. 如何獲取有關通過live()綁定到元素的事件的信息?
- 18. JS:獲取所有引發事件的元素
- 19. 從onchange事件中獲取所有表單元素的值
- 20. 在jQuery中獲取由.on()綁定的所有事件
- 21. 是否有可能獲取綁定到jQuery元素的事件列表?
- 22. ArrayList獲取所有元素
- 23. 獲取所有iframe元素
- 24. 獲取,如果沒有事件調用JavaScript中的DOM元素
- 25. 使用jquery捕獲給定元素的所有事件
- 26. 獲取特定元素下的所有元素
- 27. 綁定事件的正確元素
- 28. 如何獲取控件父DataContext元素元素數據綁定?
- 29. Javascript/JQuery - 無法獲取keydown事件以觸發特定元素
- 30. 使用jquery獲取所有綁定事件
['getEventListeners(文件)'](https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference utm_source = dcc&utm_medium = redirect&utm_campaign = 2016q3#geteventlistenersobject)可能會訣竅。這在開發人員的控制檯中工作,但我不知道這是否在.js文件中工作。 –
謝謝,我知道這個功能,但它只對單個元素有效。 我需要頁面上的所有元素。 我可以遞歸循環dom並在每個元素上調用此方法。 是否有更簡單的解決方案? – marcobiedermann
事件如何被綁定?我個人喜歡將jQuery用於所有事件管理,因爲要使用'.on()'和'.off()'是多麼簡單,再加上名稱間距,更容易保持自己的組織和管理您關心的事件。 – Turk