gpt4 book ai didi

javascript - Native Client 模块可以呈现由 C++ 代码生成的 HTML 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:16:24 25 4
gpt4 key购买 nike

我有一些数据分析代码可以处理输入文件并输出 HTML 和/或 SVG。它是 C++ 和 CPU 密集型的。

我想创建一个浏览器插件,这样我的代码就可以在不离开浏览器的情况下使用。 Google 的 Native Client 框架和 Pepper API 听起来很有趣,但可能限制太多了。从 Native Client 模块可以通过 Pepper 执行以下操作吗?

  1. 访问用户文件系统上的本地文件。我知道 NaCl 沙箱通常会阻止这种情况,但肯定有办法通过用户选择的文件从 Javascript 层下降到 NaCL?

  2. 将 HTML 或 SVG 输出回浏览器。 C++ 有什么方法可以修改包含文档的 DOM?

最佳答案

我不太确定 (1),但 (2) 绝对不是直接可能的。

对于 (1),Pepper API 应该允许文件选择器将文件提供给 NaCl 模块,就像 WebFS 允许它用于 JavaScript 一样。我不确定这个的执行状态。

对于(2),C++代码不能直接操作DOM。但是,NaCl 模块可以使用 PostMessage 接口(interface)将字符串发送到 JavaScript 代码,然后由 JavaScript 代码执行实际的 DOM 操作。请注意,在 Chrome 中,NaCl 模块是事件处理程序。这意味着如果计算由某个事件启动并同步运行(并且它是 CPU 密集型的),它将导致浏览器失去交互响应能力,或者变得卡顿,因为事件处理程序返回的时间太长。更好的方法是生成一个后台线程来完成事件处理程序中的工作(或唤醒工作线程),然后立即从事件处理程序返回。当计算完成并且结果准备就绪时,PostMessage 返回结果让 JavaScript 线程唤醒(再次作为事件处理程序)并执行 DOM 操作。请注意,目前 PostMessage 必须在主线程上调用,因此工作线程必须使用 CallOnMainThread 来唤醒主事件处理线程,以便它可以依次执行 PostMessage。

continuation passing 风格是不是很有趣?

关于javascript - Native Client 模块可以呈现由 C++ 代码生成的 HTML 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9111019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com