Как не пробовал найти более-менее развернутую информацию про MutationObserver находил один и тот же код, по примеру которого выходила полная бредятина, она при этом и зацикливалась, ложа сайт вместе с браузером.
Приведу одну из последних попыток выполнить данный код. Может кто сможет объяснить, что не так-то.
По задумке нужно изначально после загрузки страницы изменить ссылку c "/link" на "/newlink". И постоянно заменять старую на новую в случае, если все собьется и вернется первая.
<ul>
<li id="change">
<a href="/link">...</a>
<div>...</div>
<div>...</div>
</li>
...
</ul>
var a = document.getElementById('change').children[0];
a.setAttribute('href', '/newlink');
var mObserver = new MutationObserver(function() {
a.setAttribute('href', '/newlink');
});
if (a.href != '/newlink'){
mObserver.observe(a, {attributes: true});
}
В любом случае где-то сильно лажаю, так как вместо одноразового выполнения в консоли вижу зацикливание с цифрами переваливающими за тысячи, ну и дальнейшим мертвым зависанием браузера.