渲染引擎和javascript引擎如何在浏览器中通信?

jdzmm42g  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(362)

我正在寻找关于这个问题的详细答案。
我已经知道的
因此,我对调用堆栈和回调有一些了解,并且浏览器通过web API添加功能,web API通过事件循环添加回调。我还读了一些关于js引擎有api的文章。
我想了解的是
web API是如何向js引擎公开的(如果这是关于js引擎有一个api,那么对该api如何工作的一些描述就可以了)
如何通过javascript操纵渲染引擎的行为,如操纵dom、cssom等(如果我理解正确,这相当于询问web API如何工作)
谢谢

3qpi33ja

3qpi33ja1#

从(c等)应用程序开发的Angular 来看,javascript引擎是可嵌入的库;浏览器就是这样的嵌入器。任何库都定义了一个可以使用它的公共接口——它的应用程序编程接口(简称api)。js引擎的api应该是什么样子没有标准;每个引擎定义自己的引擎,并根据需要随时间演化。v8引擎在这里。
JS引擎API的核心功能是允许嵌入器向嵌入的自己的C
实现支持的JavaScript环境提供对象和功能。本质上,这定义了一个Map,有时也称为“绑定”。例如,嵌入程序可以说“我希望有一个 document 对象,并且它应该看起来具有属性 .location 这是由我的getter函数支持的 DocumentLocationGetter() {...} ,它应该(似乎)有一个方法 .createElement() 这是由我的其他功能支持的 DocumentCreateElement(...) {...} ”等等。
这就是你两个问题的答案:浏览器向javascript公开某些函数,然后可以从那里调用这些函数。浏览器决定调用此类函数时要执行的操作(例如:添加或删除dom节点、更改css属性、将事件处理程序存储在某个元素的事件处理程序列表中等等)。当然,浏览器/嵌入式程序也可以调用js引擎,例如,在调用事件处理程序时,它可以告诉引擎“请执行函数” button1_clicked 现在”。
有关更多详细信息,请参见例如v8.dev/docs/embed。

相关问题