На прошлом проекте для себя нашёл вот такую конструкцию:
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
var elem = document.getElementById("some-id");
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type == "attributes") {
console.log("attributes changed");
console.log(mutation);
//debugger;
}
});
});
observer.observe(elem, {
attributes: true //configure it to listen to attribute changes
});
Использовал её, чтобы понять кто меняет атрибуты у элементов. Думаю матёрые js-ники и так это умеют делать, но мне пригождалось в отладке, т.к. проект был огромный.