2012-06-13 9 views
12

Chrome Inspector'da etkinlik dinleyicilerini görebileceğinizi biliyorum, ancak bazı hata ayıklama işlerini yapıyorum ve etrafta yatan çok sayıda etkinlik dinleyicisi var. Düzenlemeden bazılarını devre dışı bırakmak istiyorum kodBir olay dinleyiciyi kaldırmak için Chrome'un webkit denetçisini kullanın

enter image description here

Webkit müfettiş hızla bir olay dinleyicisi devre dışı bırakmak için bir yolu var mı?

Belki de konsola removeEventListener dinleyicisine bir göz atın ve kod yazın? Bunu nasıl yapardım? Mesela, 'click' dinleyicisini,

cevap

4

'un üstünden nasıl kaldırabilirim? Üzgünüz, şansınız yok (en azından şimdilik.) removeEventListener, bağımsız dinleyici Function nesnesini bir argüman olarak gerektirir ve DevTools size izin vermez herhangi bir şekilde dinleyici işlevinin bir kavrama.

Bu özelliğe kesinlikle ihtiyacınız varsa, lütfen http://new.crbug.com (Chrome'a ​​karşı) veya http://bugs.webkit.org (WebKit'e karşı tercih edilen yol) bir hata yapın.

+0

2017. https://stackoverflow.com/a/32191966/2661831 – Josiah

3

Bir javascript konsolunda bir olay dinleyicisini kaldırabilirsiniz. Önce bu olay dinleyicisinin eklendiği öğeyi bulun. Diyelim diyelim Sonra yürütme: e.onclick=null. Örneğin, birçok olay dinleyicisi "gövdeye" eklenir, ardından yukarıdaki kod : document.body.onclick=null10 olur. Bundan sonra olay dinleyicisi kaldırıldı.

+0

Sadece önerdi ve onu etmediğin şeyi denedi ile bir olay dinleyicisi oluştururken çalışın: document.body.addEventListener ('click', function() {console.log ('clicked'); }); – d48

+1

evet haklısınız. Testlerim tüm vakaları kapsamıyordu. Doğru cevabın burada olduğu görünüyor: http://stackoverflow.com/questions/4919079/remove-all-onclick-events-for-an-element –

7

Bir dinleyiciye (WebKit konsolunda) başvuru almak için getEventListeners(element).click[index].listener kullanabilirsiniz.

Yani, birinci dinleyici kaldırmak için, bunu yapabilirsiniz: Sadece

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)) 
+0

Bu harika bir cevap. Not, belge yerine pencere ile aramak zorunda kalabilirsiniz. – Josiah

1

:

getEventListeners(document).click[0].remove() 

document.removeEventListener('click', getEventListeners(document).click[0].listener) 

Benzer şekilde, tüm dinleyicileri kaldırmak için, bu fonksiyonu kullanabilirsiniz

Diğer öğelerle de çalışır:

Olayların
getEventListeners($('#submit-button')[0]).click[0].remove() 

Diğeri türleri: itibarıyla krom işlerin altına Jackson'un cevabını @

getEventListeners($('#login-form')[0]).submit[0].remove() 
İlgili konular