是否可以在Firefox擴展中使用Firebreath製作的.dll文件?在Firefox擴展中使用Firebreath生成的插件?
目前,我試圖移植一個我爲Google Chrome製作的擴展程序,該擴展程序使用javascript獲取文檔的HTML,然後從.dll調用一個函數並將該文檔的HTML作爲參數傳遞。 .dll然後保存該文件並啓動一個程序。
有沒有簡單的方法將此功能移植到Firefox?或者我將不得不使用XPCOM重寫代碼?
是否可以在Firefox擴展中使用Firebreath製作的.dll文件?在Firefox擴展中使用Firebreath生成的插件?
目前,我試圖移植一個我爲Google Chrome製作的擴展程序,該擴展程序使用javascript獲取文檔的HTML,然後從.dll調用一個函數並將該文檔的HTML作爲參數傳遞。 .dll然後保存該文件並啓動一個程序。
有沒有簡單的方法將此功能移植到Firefox?或者我將不得不使用XPCOM重寫代碼?
XPCOM對於簡單的事情來說太複雜了,這就是爲什麼Firefox 4及更高版本有js-ctypes(例如https://developer.mozilla.org/en/js-ctypes爲概述,https://developer.mozilla.org/en/js-ctypes/Using_js-ctypes#Calling_Windows_routines爲例)。這使您可以輕鬆加載DLL並調用導出的本地函數。如果你確實需要使用這個DLL作爲NPAPI插件,事情會變得更加複雜,因爲你需要一個窗口來將插件加載到Firefox中,而不像Chrome那樣沒有專門的背景窗口。但我想你只是把你的DLL變成一個插件才能在Chrome中使用它。
在定位您的DLL與ctypes.open使用()見我的答案在這裏:Reference a binary-component to js-ctypes
對於簡單的功能,我還建議JS-ctypes的。它易於使用並提供良好的隔離(因爲頁面上的腳本無法訪問導入的庫)。
如果你真的需要從任何頁面訪問NPAPI插件,標準的做法似乎是創建一個擴展和修改每個頁面的DOM,包括插件:
是你可以使用Firebreath DLL作爲Firefox的擴展。您可以使用相同的JavaScript,並對Firefox進行一些修改,對於HTML,您必須使用XUL。你完全可以裝載在XUL是覆蓋默認firfox的browser.xul
overlay chrome://browser/content/browser.xul chrome://Yourproject/content/Youroverlay.xul
內Youroverlay.xul腳本,您可以添加以下行來嵌入Firebreath DLL
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/"?>
<overlay id="myOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml">
<script type="application/javascript" src="chrome://Yourproject/content/background.js"/>
<vbox style="height:0;">
<html:embed type="application/x-myproject" id="myproject1" style="height:0;"/>
</vbox>
</overlay>