我正在研究v8来源。 我花了3个星期,但我找不到8v如何调用DOM的功能。
Example for,
<script>
document.writeln("Hello V8");
</script>
我想知道调用序列的过程,DOM的writeln()函数。 你能解释一下这个或给我一些提示。
答案 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