Обмен данными между файлами в расширении Firefox - PullRequest
10 голосов
/ 19 мая 2011

Я перемещаю расширение из Chrome в Firefox и использую дополнительный SDK.Для доступа к функциям, объявленным в фоновом файле из панели или всплывающего окна, я могу использовать chrome.extension.getBackgroundPage в Chrome.Есть ли в Firefox какой-то эквивалент, посредством которого я могу получить доступ к данным / функциям, объявленным в main.js, или в каком-либо другом файле где-либо еще?

1 Ответ

1 голос
/ 21 мая 2011

Очевидно, Jetpack не поддерживает это (хотя возможно с ванильными дополнениями Firefox).

Но есть глава, которая поможет вам, но она не так проста, потому что она включает обмен сообщениями через события между надстройкой и скриптами содержимого .

Edit:

Давайте рассмотрим пример из MDN о расширениях . Вы можете думать о XUL + JavaScript как HTML + JavaScript. В отличие от того, как Jetpack отделяет (песочницы) ваш основной аддон-код от вашего контекста (html, javascript, css в панелях, виджеты и т. Д.); он работает в одном «пользовательском пространстве».

Адаптируясь на оверлее на предыдущей странице и добавляя код Javascript, который работает с XPCOM, вы получаете:

<?xml version="1.0"?>
<overlay id="sample" 
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <script type="text/javascript">
   function getOS() {
     return Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS;
   }
 </script>
 <statusbar id="status-bar">
  <statusbarpanel id="my-panel" label="OS?" onclick="alert(getOS())" />
 </statusbar>
</overlay>

А если, скажем, функция находится во внешнем файле, вы просто включаете ее, как обычный JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...