我正在制作 Chromium 的自定义构建,以便以自定义方式访问语音到文本功能,但我不确定如何通过 JavaScript 公开对新本机方法的访问。
在其他版本的 WebKit 中,有 addToJavaScriptWindowObject 之类的方法(在 Qt 中),但我不确定如何在 Chromium 中做同样的事情。
我正在制作 Chromium 的自定义构建,以便以自定义方式访问语音到文本功能,但我不确定如何通过 JavaScript 公开对新本机方法的访问。
在其他版本的 WebKit 中,有 addToJavaScriptWindowObject 之类的方法(在 Qt 中),但我不确定如何在 Chromium 中做同样的事情。
进程间 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 代码库接受您的语音到文本功能,那么您最好遵循其他功能的实现方式。