如何使用可以访问Chromium中的本机代码的自定义方法扩展JavaScript API

时间:2011-01-18 05:23:03

标签: javascript c++ webkit chromium

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

在其他版本的WebKit中,有一些方法,如addToJavaScriptWindowObject(在Qt中),但我不知道如何在Chromium中做同样的事情。

1 个答案:

答案 0 :(得分: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代码库中,那么您可能最好采用其他功能的方式实现。