MutationObserver зависает в IE11 - PullRequest
       16

MutationObserver зависает в IE11

0 голосов
/ 07 сентября 2018

Я использую MutationObserver для проверки, когда некоторые узлы удаляются и заменяются другими новыми узлами в элементе.

Следующий код прекрасно работает в Chrome, но в IE11 он просто зависает.

Если я изменяю проверку добавленных узлов с удаленными узлами, он работает в IE11. Я просто не понимаю, почему он зависает при проверке добавления новых узлов.

Есть идеи? Я не могу найти ресурсы для этой проблемы.

var nodeToObserve = document.querySelector('#targetNode');

var callback = function(mutations, observer) {
  for (var index = 0; index < mutations.length; index) {
    var mutation = mutations[index];
    if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
      console.log(mutation);
      break;
    }

  }
  observer.disconnect();
}
const observer = new MutationObserver(callback);

observer.observe(nodeToObserve, {
  childList: true, // target node's children
  subtree: true // target node's descendants
});
html, body {
  height: 100%;
}

#targetNode {
  border: 1px solid black;
  height: 100%;
}

.childNode {
  //height: 20px;
  background-color: blue;
  margin: 10px;
  padding: 10px;
}

.grandChildNode {
  height: 20px;
  background-color: red;
  margin: 10px;
}
<div id="targetNode">

</div>

1 Ответ

0 голосов
/ 07 сентября 2018

Вы не увеличиваете index в цикле for.Возможно, результаты отображаются в другом порядке в зависимости от браузера, поэтому оператор if будет запускаться в некоторых браузерах, но не в других.Таким образом, система будет зависать, когда оператор if не выполняется в бесконечном цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...