对DOM的v8访问
我想更改v8引擎,以便能够拦截对DOM元素的每次访问。 如您所知,v8并不创建DOM树。浏览器创建DOM树对DOM的v8访问,dom,v8,Dom,V8,我想更改v8引擎,以便能够拦截对DOM元素的每次访问。 如您所知,v8并不创建DOM树。浏览器创建DOM树 我的问题1:在v8源代码中,DOM内存结构是如何/在哪里传递到v8的 我怎样才能用最少的努力进行拦截 我无法告诉您在V8中DOM的确切注册位置,但我有一些提示可以告诉您从哪里开始搜索。首先,当浏览器创建DOM时,您还应该查看浏览器,而不是v8。如果您找到了在V8中注册DOM的位置,您还将看到V8中为此调用了哪些代码 在chromium中,是包含网页的类。在整个创建过程中,它实例化了一个对
- 我的问题1:在v8源代码中,DOM内存结构是如何/在哪里传递到v8的
- 我怎样才能用最少的努力进行拦截
/src/out/Debug/gen/webcore/bindings
,这是一个在编译过程中创建并填充DOM对象所有模板的目录。您可以根据需要编辑它们,并使用更改重新编译
如果您找到生成它们的脚本,您可能会同时为它们附加拦截器。我无法告诉您DOM在V8中的确切注册位置,但我有一些提示,告诉您可以从何处开始搜索。首先,当浏览器创建DOM时,您还应该查看浏览器,而不是v8。如果您找到了在V8中注册DOM的位置,您还将看到V8中为此调用了哪些代码 在chromium中,是包含网页的类。在整个创建过程中,它实例化了一个对象,该对象本身创建了一个。传入的对象及其子对象维护从DOM到JS对象的映射 这并不能确切地告诉您DOM在V8中的注册位置,但是您应该在附近的某个地方找到它。使用Eclipse并让它搜索chromium项目中看似有趣的方法的引用,或者列出调用层次结构,这些都是进行此类研究的好工具 p.S.:由于我自己也需要类似的东西,我遇到了
/src/out/Debug/gen/webcore/bindings
,这是一个在编译过程中创建并填充DOM对象所有模板的目录。您可以根据需要编辑它们,并使用更改重新编译
如果您找到生成它们的脚本,您可能会同时为它们附加拦截器。向V8注册DOM元素的代码不在V8源代码中,而是在Chromium源代码的另一部分:第三方/WebKit/source/ 其中有几件您可能感兴趣:
- core/dom:这个目录包含基本dom类的实现,以及它们的IDL定义,这些定义用于生成到V8的接口
- core/html:相同,但适用于特定于html的类
- 绑定/脚本:我相信这就是脚本所在的位置,它将IDL转换为与V8接口的C源代码(我没有详细介绍这一部分)
- bindings/core/v8:这是实际调用v8以执行脚本等的代码所在的位置
- 第三方/blink/renderer/core/dom/
- 第三方/blink/renderer/core/html/
- 第三方/闪烁/渲染器/绑定/脚本/
- 第三方/blink/renderer/bindings/core/v8/
- core/dom:这个目录包含基本dom类的实现,以及它们的IDL定义,这些定义用于生成到V8的接口
- core/html:相同,但适用于特定于html的类
- 绑定/脚本:我相信这就是脚本所在的位置,它将IDL转换为与V8接口的C源代码(我没有详细介绍这一部分)
- bindings/core/v8:这是实际调用v8以执行脚本等的代码所在的位置
- 第三方/blink/renderer/core/dom/
- 第三方/blink/renderer/core/html/
- 第三方/闪烁/渲染器/绑定/脚本/
- 第三方/blink/renderer/bindings/core/v8/