我正在编写一个服务器应用程序,它能够在将 DOM 提供给客户端之前对其进行操作。
我使用 C++ 和 Google 的 v8 作为 javascript 引擎,但我在 v8 中看不到任何 DOM API。
是否有在 HTML 上进行 DOM 操作的开源实现?
如果不是,您将如何实施?
我正在编写一个服务器应用程序,它能够在将 DOM 提供给客户端之前对其进行操作。
我使用 C++ 和 Google 的 v8 作为 javascript 引擎,但我在 v8 中看不到任何 DOM API。
是否有在 HTML 上进行 DOM 操作的开源实现?
如果不是,您将如何实施?
DOM 被创建并链接到 Chrome 中的 V8 引擎。V8 源代码对浏览器 DOM 一无所知。让这个为你工作的最快方法是尝试提取将 HTML 加载到结构中的 Chrome(实际上是 Chromium)的部分,以及将 DOM 和 DOM 方法链接到 V8 的部分。它可能没有你想象的那么糟糕。如果有的话,据我查看 V8 源代码可以看出,Google 生成了非常干净的 C++。它可能没有你想象的那么糟糕。
你检查过CplusplusDOM吗?(在您提出问题后创建)
C++ DOM API 是一个库,用于在 NPAPI/Pepper 上使用 C++ 编写 Web 应用程序,使用 Web IDL C++ 绑定来访问 Web 浏览器内的 DOM 对象。
正如您已经(据我所知)在 C++ 中拥有自己的 dom 实现并且只需要 JS dom 绑定,我相信在将低级 JS 函数映射到您已经拥有的接口的 JS 中实现它的大部分内容会更容易
Safari/Chrome 使用 Webkit 渲染引擎,它结合了 CSS 渲染和 DOM,我会说它是除了 Opera 之外最好的渲染引擎之一 - 我认为它可能有用:
截至 2018 年,Cloudflare Workers在 V8 引擎上运行,一些开发人员一直在研究如何访问 DOM 解析和操作。他们发现了dom-parser和cheerio,所以它们可能会提供你需要的东西。Cheerio 提供了一种有用的类似 jQuery 的语法。它们是 NodeJS 模块,但似乎它们可以在 V8 中运行。
请参阅:https ://simon-thompson.me/simple-dom-manipulation-via-jquery-in-cloudflare-workers/