我想更改v8引擎,以便能够拦截对DOM元素的每次访问。 如您所知,v8不会创建DOM树。浏览器创建DOM树。
答案 0 :(得分:1)
我无法确切地告诉你在V8中注册DOM的确切位置,但我有一些关于你可以开始搜索的提示。首先,当浏览器创建DOM时,您还应该在浏览器中查看,而不是v8。如果您在V8中找到了DOM注册的位置,您还会看到为此调用V8中的代码。
在铬中,Frame是包含网页的类。在整个创建过程中,它会实例化一个ScriptController对象,该对象本身会创建一个V8DOMWindowShell。传入DOMWrapperWorld及其DOMDataStore维护从DOM到JS对象的映射。
这并不完全告诉你在V8中注册DOM的位置,但在某处你应该找到这个。使用Eclipse并让它在chrome项目中搜索看似有趣的方法的参考或列出调用层次结构是这种研究的好工具。
PS :因为我自己需要类似的东西,所以我遇到了/src/out/Debug/gen/webcore/bindings
这是一个在Chromium编译过程中创建并填充了DOM对象的所有模板的目录。 。您可以根据需要编辑它们,并根据您的更改重新编译。
如果您找到生成它们的脚本,您可能会同时为它们附加拦截器。
答案 1 :(得分:1)
使用V8注册DOM元素的代码不在V8源代码中,它位于Chromium源代码的另一部分:third_party / WebKit / Source /
你可能会感兴趣的是: