Как получить функцию, которая вызвала мутацию DOM с MutationObserver? - PullRequest
0 голосов
/ 06 декабря 2018

В настоящее время я пытаюсь выяснить, какая функция модифицировала DOM, используя MutationObserver.Следующий фрагмент, к сожалению, не работает (трассировка стека кажется пустой).

var targetNode = document.body;
var config = { attributes: true, childList: true, subtree: true };
var callback = function(mutationsList, observer) {
    for(var mutation of mutationsList) {
      // The trace unfortunatelly doesn't contain the function 
      // "addSomeElement", which I am trying to receive at this point.
      console.trace(); 
    }
};

var observer = new MutationObserver(callback);
observer.observe(targetNode, config);

, за которой следует некоторая мутация DOM:

function addSomeElement() {
  targetNode.appendChild(document.createElement('span'));
}
addSomeElement();

Есть ли способ, как яможет вывести функцию, которая выполняет фактический вызов мутации (в данном случае appendChild)?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Использовать точку останова DOM (должна работать в Chrome и Firefox)

Инструменты разработчика
-> Инспектор
-> Щелкните правой кнопкой мыши элемент, который вы хотите отслеживать
-> Разбить на: Изменения поддерева

Когда дочерние элементы выбранного узла изменены, браузер сломает ответственный фрагмент JavaScript.

Adding DOM breakpoint

0 голосов
/ 06 декабря 2018

Вы не можете.

MutationObserver возвращает MutationRecord, который описывает только сами изменения.

Он не предоставляет информацию о том, как эти изменения были произведены.

...