在Chrome浏览器扩展中使用HTML和JavaScript非常容易,但是如何重用已有的非JavaScript遗留系统代码呢?答案是将NPAPI插件绑定到Chrome浏览器扩展,从而实现在Chrome浏览器扩展中通过JavaScript调用遗留系统代码。
注意,出于安全性的考虑,NPAPI已经于2015年开始被Chrome浏览器全面禁用。请使用PPAPI(Pepper Plugin API)开发新插件,详情请关注本文的后续内容。
下面介绍的内容仅供参考。
由于NPAPI插件中的代码拥有各种权限,Chrome浏览器无法设置任何限制,所以对于来自NPAPI插件的输入参数必选格外小心。由于NPAPI的安全风险,在将包含NPAPI插件的Chrome浏览器扩展发布到Chrome Web Store时,需要人工检查。
要在Chrome浏览器扩展中使用NPAPI插件,首先要在manifest.json文件中声明NPAPI插件的位置等信息如下:
{
...
"plugins": [
{ "path": "extension_plugin.dll" }//相对于manifest.json文件的相对路径
{ "public": true }//Web页面或content scripts是否可访问该NPAPI插件,
//默认false,表示只有Chrome浏览器扩展才能够访问
],
...
}
其次,需要在Chrome浏览器扩展中(public=false)或任何Web页面或content scripts中(public=true)的HTML文件中通过MIME类型加载NPAPI插件,示例如下:
<embed type="application/x-my-extension" id="pluginId">
<script>
var plugin = document.getElementById("pluginId");
var result = plugin.myPluginMethod(); //调用NPAPI插件中的方法
console.log("my plugin returned: " + result);
</script>
注意,替换上述页面中的x-my-extension为合适的MIME类型。