问题标签 [mutation-events]

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 投票
2 回答
643 浏览

javascript - 检测具有特定 ID 的元素何时插入 DOM 的最有效方法是什么

正如标题所示,当具有特定 id 或 CSS 类的元素插入 DOM 时,我想检测确切的时间戳(并可能检测它何时被删除)。最明显的方法是定期轮询文档,通过调用document.getElementById我要查找的元素的 id,但这种方法不是很准确,如果我有多个要检测的元素,可能会非常消耗性能。

我查看了Mutation EventsMutation Observers,但据我了解,为了检测元素是否被插入或删除,我必须向根 DOM 元素添加一个侦听器,如果需要,这会严重影响性能每次从页面插入或删除元素时执行额外的 JS。

是否有我不知道的更优化的解决方案?另外,如果我不使用外部 JS 库,甚至是 jQuery,我会更喜欢。

0 投票
1 回答
140 浏览

javascript - DOMNodeInserted is posible to mark added elements?

I'm using DOMNodeInserted MutationEvent, is any way to select only new inserted elements by using this event? I have to add class to all inputs when they are inserted to document. I'm inserting new inputs to form via AJAX request but I can't add it there because this part have to work independently.

0 投票
1 回答
675 浏览

javascript - removeEventListener 在 IE10 中不起作用,在 Chrome 中起作用

我正在尝试创建一个迷你库,MutationObserver用于检测 DOM 中的变化,但也可以回退到旧浏览器中的基本突变事件。到目前为止一切顺利,它在 Chrome 和 Firefox 中都能正常工作,我也在这些浏览器中测试了后备 - 一切正常,但是当我测试 IE 10 时,它的行为有所不同(多么出乎意料......)

在这个库中,您可以简单地调用:

callback 获取一个参数 - 具有断开连接和观察方法的观察者,因此您可以在对节点进行一些更改时停止观察节点,然后再次开始观察。

在后备中,我使用突变事件并添加/删除事件侦听器。我认为问题在于,在 IE 中,事件并没有真正被删除,它陷入了无限循环(我的代码在其中,setTimeout所以它不会让你的浏览器崩溃)。出于某种原因,它可能认为这this.realCallback是不同的功能?

我只用有问题的代码创建了一个迷你小提琴,尝试在 Chrome 中运行它,然后在 IE10 中运行它:http: //jsfiddle.net/Hb45w/2/

(完整库小提琴:http: //jsfiddle.net/x6W3p/

0 投票
3 回答
45634 浏览

jquery - 使用 DOMSubtreeModified 突变事件。在 jQuery 中

我在我的页面上使用了以下 jQuery 代码,并且在 chrome 上一切正常。但是当我在 Firefox 中打开相应的页面时,我得到了无响应的脚本错误。

我知道根据 DOM3 规范,突变事件已被弃用。但是,如果有人可以在这里帮助我,我将不胜感激。

相应的 HTML 是:

0 投票
1 回答
10025 浏览

javascript - Mutation Observer 无法检测到元素的 dom 移除

所以,我认为这会很简单,曾经有一个DOMNodeRemoved事件,但不推荐使用,相反,应该使用MutationObserver ,问题是,即使配置适当,它也不会触发。

根据这篇关于从变异事件迁移到变异观察者的文章检测节点的 dom 移除的{ childList: true, subtree: true }配置childList是到mdn 文章subtree

无论如何,我已经解决了这个问题,它非常简单,<button>删除<div>并且观察者应该记录突变记录,但它没有,看看你是否能弄清楚:)

HTML

JavaScript

谢谢!

0 投票
2 回答
920 浏览

javascript - 如何在javascript中删除突变记录对象

我正在观察一个 Div 元素的变化,该元素被带有 ajax 调用的子 div 填充。我的目标是在观察到的 Record 对象中进行一些检查并过滤其中的一些。如何从观察到的突变列表中删除/删除/过滤这些突变记录?并使它们在网页中过滤。

我试图从突变列表中删除突变记录,但没有奏效。谢谢你的帮助。

0 投票
1 回答
58 浏览

javascript - 在插入 DOM 之前更改元素的 HTML

是否可以在将元素插入 DOM 之前更改元素的内部 HTML?我已经尝试使用MutationObserver执行此操作,但问题是您可以看到元素的 HTML 在视觉上发生变化,有没有办法在完全插入 DOM 之前执行此操作?

0 投票
2 回答
7832 浏览

javascript - DOMNodeInserted 和 DOMNodeRemoved 事件

下面的代码工作正常,除了计数器。当我将一个项目添加到列表中时,计数器是准确的,但是当我从列表中删除一个项目时,它不会从计数器中减去一个。有任何想法吗?

HTML

JavaScript

0 投票
1 回答
55 浏览

javascript - 是否可以安全地将 javascript 代码发送到用户的浏览器?

是否可以将 javascript 代码发送到客户端,并将信息发送回服务器,而用户无法拦截、查看或更改它。据我所知,这是不可能的,但我不确定某些实时协议,如 socket/ajax。有人可以拦截网络套接字吗?

如果这是不可能的,是否有一个聪明的解决方案来验证代码没有被改变,或者至少让代码更难被改变?也许是 Dom 突变事件?混淆代码/数据的某些敏感部分怎么样?

即:谷歌分析如何知道给定用户没有创建虚假数据?

0 投票
2 回答
912 浏览

javascript - 有一个元素的引用,如何检测它何时附加到文档中?

我正在开发一个 JavaScript 模块,它对将在其中使用它的环境一无所知。

而且,从技术上讲,我想实现下一个功能:

element是一个HTMLElement并且这个元素的父元素在模块初始化期间可能是未知的。是一个函数,一旦出现在页面上就callback必须触发。element

如果元素附加到文档,则必须立即调用回调。如果element尚未附加,则功能将在文档上出现时callback触发。element

问题是,我们可以element使用DOMNodeInserted突变事件来检测附加事件。但突变事件现在已被弃用。而且似乎MutationObserver无法处理这个任务,可以吗?

这是我的代码片段: