2017-02-08 39 views
5

Programlı olarak ek sınıfları olan bir div var. Bu setInterval uygulamasını kullanmadan sınıf adı değişikliğini nasıl algılayabilirim?SetInterval olmadan sınıf değişikliğini algılama

setInterval(function() { 
    var elem = document.getElementsByClassName('original')[0]; 
    if (elem.classList.contains("added")) { detected(); } 
}, 5500); 

MutationObserver?

+1

Bir etkinlik kovabilir misin? Ya da değişmeyen bir müşterideki sınıf değişikliğini tespit etmek ister misiniz? yani. belge değişti mi? Bir itme güncellemesi ile bunu yapmak mümkün olabilir. –

+3

öznitelikFilter seçeneğine sahip MutationObserver: [Mutasyon gözlemcileri ile belirli bir stil öznitelik değişikliğine nasıl tepki verebiliriz?] (// stackoverflow.com/a/39024295) - 'style' işlevini 'class' ile değiştirin. – wOxxOm

+0

Değişimi yapmıyorum ... Kodum chrome extension – David

cevap

6

mutation observer'u kullanabilirsiniz. Bugünlerde widely supported. Eğer sınıf değiştirdiğinizde

var e = document.getElementById('test') 
 
var observer = new MutationObserver(function (event) { 
 
    console.log(event) 
 
}) 
 

 
observer.observe(e, { 
 
    attributes: true, 
 
    attributeFilter: ['class'], 
 
    childList: false, 
 
    characterData: false 
 
}) 
 

 
setTimeout(function() { 
 
    e.className = 'hello' 
 
}, 1000)
<div id="test"> 
 
</div>

İlgili konular