2017-02-08 6 views
5

私はdivを持っています。このクラスにはプログラムによって追加のクラスが追加されています。このsetInterval実装を使用せずにクラス名の変更を検出するにはどうすればよいですか?setIntervalを使わないでクラスの変更を検出する

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

突然変異観察者?

+1

クラスを変更するときは、イベントを発生することができますか?または、変更を行っていないクライアントでクラスの変更を検出したいですか?すなわち、ドキュメントが変更されましたか?あなたはプッシュアップデートでそれを行うことができるかもしれません。 –

+3

attributeFilterオプションを指定したMutationObserverは、[突然変異観測者による特定のスタイル属性の変更に反応する方法](// stackoverflow.com/a/39024295) - 'style'を' class'に置き換えます。 – wOxxOm

+0

私は変更を行っていません...私のコードは、クロムの拡張子を介して注入されます – David

答えて

6

mutation observerを使用できます。今日はかなりwidely supportedです。

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>

関連する問題