NPAPI 插件
利用 HTML 与 JavaScript 使您开发新的扩展程序变得非常容易,但是如果您有现存的遗留代码或专有代码,并且希望在您的扩展程序中重用,那该怎么办?您可以将 NPAPI 插件和您的扩展程序一起打包,使您可以从 JavaScript 中调用本机二进制代码。
警告
NPAPI 将要淘汰,请考虑使用其他替代方式。
NPAPI 应该尽可能地避免,除非没有其他任何可行的方式。
运行在NPAPI插件中的代码拥有当前用户的所有权限,不在沙箱中运行,对于恶意的输入不受到 Google Chrome 浏览器的任何保护。您在处理来自不受信任来源的输入时应当尤其小心(例如与XMLHttpRequest 一起使用时)。
由于 NPAPI 可能会给用户带来额外的安全风险,使用它的扩展程序在被 Chrome 网上应用店接受前要求人工审核。
详情
如何开发 NPAPI 插件的内容不在本文档的范围内,有关信息请参见 Mozilla 的 NPAPI 插件参考(英文)。
一旦您开发好了 NPAPI 插件,请遵循以下步骤让您的扩展程序使用它。
-
在您的扩展程序的
manifest.json
文件中添加一部分内容,描述插件的位置及其他有关属性:{ "name": "我的扩展程序", ... "plugins": [ { "path": "extension_plugin.dll" } ], ... }
"path" 属性指定插件的路径,相对于清单文件。"public" 属性指定普通的网页能否访问您的插件,默认为 false,只有您的扩展程序才能加载插件。添加
"public": true
可以使您的插件能够在普通网页和内容脚本中访问,但是一定要小心,任何网页都能调用您的插件。 -
创建一个 HTML 文件,通过 MIME 类型加载您的插件。假定您的 MIME 类型为
"application/x-my-extension":
<embed type="application/x-my-extension" id="pluginId"> <script> var plugin = document.getElementById("pluginId"); var result = plugin.myPluginMethod(); // 调用您的插件中的方法 console.log("我的插件返回了:" + result); </script>
这些代码可以放在后台页面或者您的扩展程序使用的其他任何 HTML 页面中。如果您的插件是公共("public")的,您甚至可以使用内容脚本通过编程方式向网页中插入您的插件。
安全性考虑
在您的扩展程序中包含 NPAPI 插件是危险的,因为插件对本地计算机的访问不受限制。如果您的插件包含漏洞,攻击者可能会利用漏洞在用户的计算机上安装恶意软件。所以要尽可能地避免使用 NPAPI 插件。
将您的 NPAPI 插件标记为公共的("public")增加了您的扩展程序受到攻击的可能性,因为插件直接暴露在网页内容中,使得恶意网站更容易操纵您的插件。所以尽可能不要将您的 NPAPI 插件标记为公共的。