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