Используя плагин, созданный с помощью Firebreath в расширении Firefox? - PullRequest
2 голосов
/ 02 июня 2011

Можно ли использовать .dll, созданную с помощью Firebreath, в расширении Firefox?

В настоящее время я пытаюсь портировать расширение, созданное для Google Chrome, которое использует javascript для получения HTML-кода документа, а затем вызывает функцию из .dll и передает HTML-код документа в качестве параметра. Затем .dll сохраняет файл и запускает программу.

Есть ли простой способ перенести эту функцию на Firefox? Или мне придется переписать код с помощью XPCOM?

Ответы [ 3 ]

3 голосов
/ 06 июня 2011

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 (), смотрите мой ответ здесь: Ссылка двоичного компонента на js-ctypes

0 голосов
/ 21 августа 2013

да, вы можете использовать Firebreath DLL в качестве расширения Firefox.Вы можете использовать тот же javascript с некоторыми модификациями для Firefox, а для HTML вы должны использовать XUL .Вы должны загрузить скрипт в XUL, который накладывает browser.xul

overlay chrome://browser/content/browser.xul chrome://Yourproject/content/Youroverlay.xul

по умолчанию для firfox. Внутри 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>
0 голосов
/ 27 сентября 2011

Для простой функциональности я также рекомендую js-ctypes. Он прост в использовании и обеспечивает хорошую изоляцию (поскольку скрипты на странице не могут получить доступ к импортированной библиотеке).

Если вам действительно нужен доступ к плагину NPAPI с любой страницы, стандартный подход заключается в создании расширения и изменении DOM каждой страницы для включения плагина:

Подключаемый модуль для сценариев NPAPI не работает с Firefox

...