问题标签 [mutation-observers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3745 浏览

javascript - mutationObserver - 如何观察innerHTML?

是否可以通过mutationObserver观察节点的innerHTML?我正在尝试使用 characterData: true,但它不会对内容更改进行任何回调。完整的选项列表:

0 投票
0 回答
84 浏览

javascript - 当元素内的 dom 停止变化时,有没有办法检测 dom 的“静止”?

使用 MutationObserver 在元素内的 dom 更改时调用函数非常容易,如下所示:

但是我希望它在'#dom_element'中的dom停止变化时做一些事情,或者如果几毫秒内没有变化。有没有办法做到这一点?

0 投票
4 回答
284 浏览

javascript - 为所有新创建的元素添加属性

例如,将值添加到所有新的 links 属性target或添加到具有随机值的_blank所有新<div>的 s 属性。title任何想法除了setTimout()

UPD:我需要类似的东西.attrGlobal()这个答案只允许使用 links 及其属性target来做到这一点,但如何对所有元素及其所有属性做到这一点?

UPD2MutationObserver按照SLaks 的 建议尝试,但点击添加按钮http://jsfiddle.net/1337/wvfkc/5/时 Firefox 冻结。

0 投票
1 回答
220 浏览

google-chrome - 如何访问在 Chrome 中打开的新网页的 DOM

我正在为此编写一个 NPAPI 插件,我正在使用来自谷歌浏览器的 NPSIMPLE 示例代码。我必须在 chrome 浏览器中打开网页的 DOM。我的插件解决方案还包括 background.html 文件。当我在 chrome 浏览器中打开时,它会调用 NPAPI 插件中的一个方法。所以我的插件可以获取这个文件的 URL。现在我想读取这个文件的 DOM 结构。

我有几个问题:

  1. 当用户在浏览器中打开一个新页面时,我如何将我的插件嵌入到该页面并获取该页面的 DOM?

  2. 每当打开新标签时,我如何在我的插件中获得通知?

  3. 如何获取我的插件的 DOM 突变通知?

  4. NPAPI 是否提供 API 来获取 DOM 突变通知或内容脚本是唯一的选择?如果内容脚本是唯一的选择,那么如何在插件和 content_script 之间建立通信?

我也在努力得到这个答案。非常感谢任何帮助...

提前致谢...

0 投票
1 回答
1961 浏览

javascript - 突变观察者不起作用

jsFiddle

上面的脚本不能正常工作。我想将 DOMNodeInserted(Line19) 替换为 MutationObserver(line21),但是当我使用 MutationObserver 时,它不起作用。

第21行应该有问题,但我不知道问题是什么,我应该怎么做。
我用chrome28和firefox23检查了这个。
它是 chrome 的扩展,所以我不必使用“WebKitMutationObserver”或“MozMutationObserver”。

请告诉我解决方案。

0 投票
2 回答
355 浏览

javascript - javascript事件:获取文档文本完全加载但脚本尚未运行的时间

DOMContentLoaded在加载文档并运行其脚本后触发,我想在执行脚本之前运行我的代码,但在document.body.outerHTML( document.childNodes[document.childNodes.length-1].outerHTML) 已满之后

我试试这个,但看起来它在被发现之后运行了很多次所以现在我在执行 mycode 之前做了一个定时器 200ms 的工作,但我想在没有定时器的情况下做

需要在 Chrome 中工作(所以 beforescriptexecuted 事件在这里不起作用)

0 投票
1 回答
4968 浏览

javascript - 为什么 MutationObserver 代码不能在 Chrome 30 上运行?

http://updates.html5rocks.com/2012/02/Detect-DOM-changes-with-Mutation-Observers我得到以下代码:

jsFiddle:http: //jsfiddle.net/cUNH9

如您所见,我们应该看到一个警报,因为一个div元素被插入到 DOM 中。但似乎 MutationObserver 代码没有运行。如何成功运行 MutationObserver 代码?

0 投票
2 回答
1136 浏览

javascript - 观察 div 中的属性变化

我正在尝试观察到

此 div 中的 data-result 属性。

大多数旧方法似乎已被贬值。我意识到 MutationObserver 是最好的方法。并自己写了一篇,但没有奏效。我找到了类似的onattrchange.js

有了这个,我试图解决我面临的问题。

我创建了这个jsfiddle,它能够检测输入更改(使用 $(document).on),但不能检测数据结果属性的更改。

我尝试了两种方法... (1) ('body').attrchange (2)$(document).on('attrchange',...)

我不确定为什么这不起作用。(我对 js 和 jquery 也很陌生,通过编码学习)

编辑:我找到了一个类似的小提琴,它完全符合我的要求。我正在做类似的事情,但我想我犯了一些小错误。

0 投票
2 回答
494 浏览

javascript - MutationObservers - 未检测到添加的某些节点

我有一个内容脚本,它监听某些网站上文本节点的插入。它工作得很好,除了在 Facebook 上。脚本未检测到某些插入的文本节点。

脚本.js

如果我允许记录所有节点类型,我可以在我的日志中看到这些文本节点的父节点。

谢谢。

0 投票
1 回答
1728 浏览

javascript - DOMNodeInserted/Removed 事件填充(或类似事件)

我需要一种方法来监听删除或添加节点的子节点时的更改。我制作了一个自动滚动插件,它可以在添加新项目时使元素滚动到底部。我正在听的事件是DOMNodeInsertedand DOMNodeRemoved

我一直在寻找DOMNodeInsertedDOMNodeRemoved. 环顾四周,我找不到任何已经存在的东西。并非所有浏览器都支持该事件,并且目前已弃用。我有一个简单的(可能是幼稚的)polyfill,我写得很快,但我怀疑它是否有效(很好)。

我知道这些事件已被弃用,但有没有更好的方法来监听元素子项的变化?