- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Chrome 扩展程序,它可以解析 DOM 并根据特定条件转换一些文本节点。我使用的是纯 Javascript,即没有 jQuery 或其他框架,我想保持这种状态。
我如何查看 DOM 中是否有新的动态插入元素,以便我也可以在它们上运行我的解析器?
再次重申,请不要推荐任何 jQuery 解决方案,或使用纯 Javascript 以外的任何解决方案。
最佳答案
接受的答案实际上不起作用,原因有几个(如下所述)。
相反,我建议这样做:
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
mutation.addedNodes.forEach(function(addedNode) {
// Do things to `addedNode` here
});
});
});
observer.observe(document.body, {childList: true, subtree: true});
...因为,正如 miniml 正确指出的那样,subtree: true
需要接收添加的非直接子元素的事件,并且传递给监听器回调的参数是 MutationRecord
的数组
此外,我选择了 document.body
作为我的观察根,因为我不认为监听动态插入到 <head>
中的元素是大多数人感兴趣的东西。(但如果需要,则只需将 document.body
替换为 document.documentElement
或仅替换 document
。)
有趣的旁注:在已接受的答案中,如果有人真的删除了 <html>
,那么听众唯一真正触发的情况就是元素和/或之后重新创建它。就是这样。 (因为文档对象是 only allowed to have one Element child 。)
关于javascript - 观察 DOM 的新元素 (VanillaJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34429865/
我正在用 Java 编写代码,并且使用 Vaadin 8 扩展。 我有一个 Vaadin 组合盒,效果很好。但我不仅想从组合框中选择项目,还想选择书面输入。这意味着我想使用组合框作为下拉菜单以及文本编
我正在尝试将 AJAX 添加到 JQuery ListView 中并呈黄色闪烁,但我似乎无法使其正常工作。谁能指出我正确的方向? http://jsfiddle.net/zFybm/ 最佳答案 根据
我有这个样式表: .pixel{ position: absolute; height: 10px; width: 10px; background-color: #f
这是我用来将新行推送到容器的一行代码: this.$el.append(new ItemView(item).render().el); 其中item是Backbone.js model,render
我正在尝试在 anguar.js 中制作一些测试应用程序,但遇到了问题。我的 js 文件包含: live = angular.module('live',[]); live.controller('p
如何绑定(bind)页面加载后创建的新元素? 我有这样的东西 system = function() { this.hello = function() { alert
html5 新元素(页眉、导航、页脚等)在 IE 中不工作 最佳答案 您需要包含 HTML5 shiv 脚本以允许在旧版 IE 浏览器中设置 HTML5 元素的样式:http://code.googl
我是一名优秀的程序员,十分优秀!