javascript - 浏览器如何从innerHTML属性更新DOM?

标签 javascript html dom

我试图弄清楚当 javascript 更改 Node.innerHTML 属性时,浏览器如何执行 DOM 更新工作。

给定代码:

> var obj=document.createElement("DIV");
> obj.innerHTML='<P><SPAN>A</SPAN></P><DIV>B</DIV>';
> obj.childNodes
[<p>​<span>​A​</span>​</p>​, <div>​B​</div>​]

这对我来说似乎很神奇,因为我认为innerHTML是一个属性,而不是一个函数,所以...

如何通知 javascript 字段中的更改以调用函数来更新 DOM 树?

当 javascript 中的变量发生更改时,是否有任何类型的监听器用于调用函数,或者只有某些守护进程在执行的每个 javascript 行上监视 Node.innerHTML 变量?

如果您想知道为什么它很重要,我正在编写一个 DOMParser,这对我来说是一个问题。

根据给定的引用资料,我了解到浏览器引擎可能提供类似 Object.watch (gecko) 或 Object.observe(chrome) 的方法。

但是在nodejs中有办法做到这一点吗?

最佳答案

since I think that innerHTML is a property, not a function

Javascript 支持 setter。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set

在这成为语言标准的一部分之前, native 对象(例如 DOM 节点)已经在内部使用了 setter 功能。

关于javascript - 浏览器如何从innerHTML属性更新DOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28096584/

相关文章:

javascript - 使用 Tampermonkey 脚本更改弹出窗口的标题?

javascript - jQuery Uploadify 中的动态 scriptData

c# - 如何使用 C# 替换 HTML 标签内部文本内容!

html - 使用 CSS 修改浏览器窗口的滚动条

java - 如何检索节点列表中的属性值

angular - 如何在 Angular 2 中获取 `DOM Element`?

javascript - 将图像从桌面拖放到浏览器,而不是通过输入进行搜索

javascript - 是否存在类似 jQuery.toggle(boolean) 的东西?

html - CSS:在单个表格中设置所有链接样式的正确方法是什么?

jQuery DOM 遍历最佳实践