3

我正在制作 Chromium 的自定义构建,以便以自定义方式访问语音到文本功能,但我不确定如何通过 JavaScript 公开对新本机方法的访问。

在其他版本的 WebKit 中,有 addToJavaScriptWindowObject 之类的方法(在 Qt 中),但我不确定如何在 Chromium 中做同样的事情。

4

1 回答 1

2

进程间 API 是一个狭窄的接口,因此本质上具有最少的调用次数。

首先,我想向您指出向跨浏览器 API 添加新功能的文档化方式(您可以在列表中搜索“carnitas”以了解更多信息): https ://sites.google.com /a/chromium.org/dev/developers/design-documents/multi-process-architecture/how-to-add-new-features

就我而言,我想出了一个挂钩到现有 API 调用的解决方案,基本上,将 javascript 代码注入页面以调用 javascript 的“prompt()”函数进行同步调用(冻结整个选项卡直到完成),和/或“ externalHost.postMessage”用于异步消息。在浏览器端,我挂钩这两个调用,并处理它们,可选择返回响应。

你可以在这里看到我为 Berkelium 编写的代码,这是一个 Chromium 包装库: https ://github.com/sirikata/berkelium/blob/chromium8/src/WindowImpl.cpp (搜索所有引用“javascriptCall”的地方,看看我是如何挂钩这些 API 的)如果您愿意修改 render_view_host.cc 或 TabContents,可以将相同的技术应用于 Chromium 本身。

您应该考虑您的 API 适合/必要的集成级别,如果您有兴趣让 Chrome 代码库接受您的语音到文本功能,那么您最好遵循其他功能的实现方式。

于 2011-02-05T01:20:26.857 回答