Я использую MutationObserver для поиска добавленных изображений на веб-страницу. Поскольку многие изображения отображаются с помощью свойства CSS background-image
, я проверяю текущий/вычислен стиль CSS в дополнение к поиску img
тегов, например ...MutationObserver и текущие/рассчитанные стили CSS
var hasBackgroundImage = function(node) {
var nodeStyle = node.currentStyle || getComputedStyle(node, null);
return (
nodeStyle &&
nodeStyle.backgroundImage &&
nodeStyle.backgroundImage != "none"
);
};
Тем не менее, кажется, есть задержка между узел, запускающий событие мутации и применяемые правила CSS, поэтому , по-видимому, не существует backgroundImage
во время мутационного события, хотя в какой-то момент будет. Я заметил это, когда код работал во время отладки (пошагово с точками останова), но не работал во время выполнения. Задержка обработки мутаций с помощью setTimeout
также работает, но чтобы быть уверенным, что задержка должна быть довольно большой и изменяется со страницы на страницу (я не уверен, что когда правила CSS будут применены). Возможной причиной может быть просто отложенная загрузка или вставка содержимого CSS.
Каков наилучший способ достижения этой функциональности? Я предполагаю, что после мутации с изменением стиля, но я сомневаюсь, что это существует.
Это может помочь, если мы знаем, почему вы пытаетесь наблюдать мутации ... – prodigitalson
@prodigitalson Я пытаюсь изменить все изображения на веб-странице как часть расширения браузера. Я бы хотел, чтобы он был максимально гладким и надежным. Я предполагаю, что наблюдатель мутации даст события для изображений, добавленных динамически, иначе я бы просто пропустил всю страницу один раз. – jozxyqk