Обмен данными между файлами в расширении Firefox

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

1 ответов


по-видимому, Jetpack не поддерживает это (хотя это возможно с дополнениями vanilla Firefox).

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

изменить:

давайте возьмем пример из 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.