我知道你可以在Chrome Inspector中看到事件監聽器,但我正在做一些調試工作,並且周圍有太多的事件監聽器,我想禁用一些編輯器而無需編輯代碼使用Chrome瀏覽器的webkit檢查器刪除事件監聽器
有沒有辦法從WebKit的檢查員迅速禁用事件監聽器?
也許看看,並輸入一些代碼到控制檯到removeEventListener
聽衆?我將如何做到這一點?例如,我將如何刪除'點擊'偵聽器上面
我知道你可以在Chrome Inspector中看到事件監聽器,但我正在做一些調試工作,並且周圍有太多的事件監聽器,我想禁用一些編輯器而無需編輯代碼使用Chrome瀏覽器的webkit檢查器刪除事件監聽器
有沒有辦法從WebKit的檢查員迅速禁用事件監聽器?
也許看看,並輸入一些代碼到控制檯到removeEventListener
聽衆?我將如何做到這一點?例如,我將如何刪除'點擊'偵聽器上面
對不起,你是運氣不好(至少暫時)。removeEventListener
要求確切的監聽器函數對象作爲參數,DevTools不讓你得到以任何方式抓住聽衆功能。
如果您確定需要此功能,請提供http://new.crbug.com(針對Chrome)或http://bugs.webkit.org(針對WebKit,首選方式)的錯誤。
您可以在javascript控制檯中刪除事件偵聽器。 首先找到此事件偵聽器附加到的元素。我們稱之爲e。然後執行: e.onclick=null
。 例如,許多事件監聽器被附加到「body」,然後上面的代碼變爲: document.body.onclick=null
。 之後,事件偵聽器被刪除。
剛試過你建議,它沒在創建一個事件監聽器時不起作用:document.body.addEventListener('click',function(){console.log('clicked'); }); – d48
是的,你是對的。我的測試沒有涵蓋所有情況。似乎正確的答案在這裏:http://stackoverflow.com/questions/4919079/remove-all-onclick-events-for-an-element –
您可以使用getEventListeners(element).click[index].listener
來獲取對偵聽器的引用(在WebKit控制檯中)。
因此,要刪除第一個聽衆,你可以這樣做:
document.removeEventListener('click', getEventListeners(document).click[0].listener)
同樣,要刪除所有監聽器,你可以使用此功能:
function removeEventListeners(element, listenerMap) {
Object.keys(listenerMap).forEach(function (name) {
var listeners = listenerMap[name];
listeners.forEach(function (object) {
element.removeEventListener(name, object.listener);
});
});
}
removeEventListeners(document, getEventListeners(document))
這是一個很好的答案。請注意,您可能必須使用窗口而不是文檔來調用它。 – Josiah
簡單:
getEventListeners(document).click[0].remove()
這也適用於其他元素:
getEventListeners($('#submit-button')[0]).click[0].remove()
與其他類型的事件:
getEventListeners($('#login-form')[0]).submit[0].remove()
@低於鉻作品的傑克遜的回答2017年https://stackoverflow.com/a/32191966/2661831 – Josiah