![f54083a73214e6d3859c0f3a7bcd0063.png](https://img-blog.csdnimg.cn/img_convert/f54083a73214e6d3859c0f3a7bcd0063.png)
JS引擎和渲染引擎各线程各司其职,JS引擎不能操作页面,只能操作JS。渲染引擎不能操作JS,只能操作页面
但是,document.body.appendChild(div1)
这句代码是如何把div1
放到页面上改变页面的呢?
跨线程通信
当浏览器发现JS在body
里面加了个div1
对象
浏览器就会通知渲染引擎在页面里也新增一个div
元素
新增的div
元素所有属性都照抄div1
对象
插入新标签的完整过程
- 在插入div1放入页面之前
你对div1
所有的操作都属于JS
线程内的操作
- 在插入div1放入页面之时
浏览器会发现JS
的意图
就会通知渲染引擎在页面中渲染div1
对应的元素
- 在插入div1放入页面之后
你对div1
的操作都有可能会触发重新渲染
比如你想改div1
的id