v8如何调用DOM的功能?

时间:2013-10-24 01:36:41

标签: javascript dom v8

我正在研究v8来源。 我花了3个星期,但我找不到8v如何调用DOM的功能。

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

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

1 个答案:

答案 0 :(得分: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使用对象创建“Wrapper Worlds”,为每个对象重新创建DOM,然后它只是将数据传递给创建的活动窗口。

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

<强>更新

正如@Esailija在没有浏览器的情况下运行时指出的V8引擎没有可用的DOM。由于DOM是Webkit / Blink的一部分,链接的引用指向它们。一旦浏览器呈现DOM,则V8对象与DOM树元素匹配。这里有一个相关的问题:V8 Access to DOM