在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類型。