У меня есть пустой div (id = "parent"), внутри которого сторонний виджет отображает некоторый контент (например, div и теги привязки). Теперь мне нужно добавить некоторые атрибуты в теги div и anchor всякий раз, когда они визуализируются виджетами.Добавить пользовательские атрибуты при изменении содержимого div
Так что у меня MutationObserver, как показано ниже:
var parent = document.getElementById("parent");
var observer = new MutationObserver(function(mutations){
functionToAddCustomAttributes();
});
observer.observe(parent, {
subtree: true,
childList: true
});
Внутри functionToAddCustomAttributes(), у меня есть код, чтобы добавить атрибуты. Мой вопрос в том, что если я добавлю атрибуты, не должен ли он снова вызвать MutationObserver, так как я обновляю дочерний элемент #parent? Разве это не должно вызвать бесконечный цикл? Это не похоже, что это происходит в моем коде, поэтому я просто хочу убедиться, что это правильный способ сделать это.
Если нет, есть ли другой способ добавить атрибуты всякий раз, когда виджет отображает контент?
кажется, что код использует некоторые реализации подписки на события шаблона (как https://github.com/mroderick/PubSubJS или так, но не DOM), в этом случае я вижу следующее объяснение, почему нет цикла: 1) код, который визуализирует виджет, публикует событие - «done», которое обрабатывается MutationObserver - потому что MutationObserver подписан на нем; 2) при выполнении функцииToAddCustomAttributes это событие публикации не запускается, поэтому ничего не происходит => no loop – shershen