v8如何调用DOM的功能?

问题描述 投票:0回答:2

我正在研究v8来源。我花了3周的时间,但是我找不到8v如何调用DOM的功能。

Example for, 
<script>
    document.writeln("Hello V8");
</script>

我想知道调用序列的过程,DOM的writeln()函数。您能解释一下还是给我一些提示。

javascript dom v8
2个回答
0
投票

您可以检查找到[[.writeln函数的V8HTMLDocumentCustom.cpp文件:

void V8HTMLDocument::writelnMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& args){ HTMLDocument* htmlDocument = V8HTMLDocument::toNative(args.Holder()); htmlDocument->writeln(writeHelperGetString(args), activeDOMWindow()->document()); }
如您所见,其中包含多个标头,其中一些标头将您带到其他标头,您可以在其中找到V8DOMConfiguration.h之类的文件>

V8DOMConfiguration.h有一些评论:

class V8DOMConfiguration { public: // The following Batch structs and methods are used for setting multiple // properties on an ObjectTemplate, used from the generated bindings // initialization (ConfigureXXXTemplate). This greatly reduces the binary // size by moving from code driven setup to data table driven setup.

我从中得到的结果是,Chrome V8使用对象创建了“包装世界”,为每个对象重新创建了DOM,然后将数据仅传递到了创建的活动窗口中。

我不太熟悉V8,但这是一个起点。也许对它有更深入了解的人可以更好地解释它。

更新

正如@Esailija指出的那样,如果在没有浏览器的情况下运行V8引擎,则没有可用的DOM。由于DOM是Webkit / Blink的一部分,因此链接的引用指向它们。浏览器渲染DOM之后,V8对象就会与DOM树元素匹配。这里有一个与此相关的问题:V8 Access to DOM

Google v8引擎不知道或不存在。 DOM是通过Web浏览器创建的。在这种情况下,我认为从chrome项目中获取源代码并查找负责管理DOM的代码会更容易。

这里是铬网站的链接,其中包含有关如何下载和编译源代码的说明。 The Chromium Projects


0
投票
Google v8引擎不知道或不存在。 DOM是通过Web浏览器创建的。在这种情况下,我认为从chrome项目中获取源代码并查找负责管理DOM的代码会更容易。
© www.soinside.com 2019 - 2024. All rights reserved.