якорная панель javascript + виджет, дополнение к Firefox - PullRequest
1 голос
/ 01 февраля 2012

Я новичок в разработке дополнения для Firefox. Я смог успешно привязать панель (пока она не сломается) к моему виджету. Якорная панель действует как своего рода меню. Я застрял в следующем: я хочу иметь возможность вызывать другую панель для отображения из одного из элементов «меню» из моей якорной панели. Как мне это сделать? Сценарии для панели меню и панели списка в настоящее время находятся в main.js.

Вот код для панели меню:

var menuList = panels.Panel({
  width: 102,
  height: 90,
  contentURL: data.url('list/menu-list.html'),    
});

А вот код для панели списка:

 var historyList = panels.Panel({
   width: 600,
   height: 300,
   contentURL: data.url('list/history-list.html'),
   contentScriptFile: [data.url('jquery-1.7.1.js'),
                   data.url('list/history-list.js')],
   contentScriptWhen: 'ready',
   onShow: function() {
  this.postMessage(simpleStorage.storage.famhistory);
   },
   onMessage: function(message) {
      require('tabs').open(message);
   }
 });

В моем меню panel.html у меня есть ссылка:

<a href="javascript:showpanel('famlist')">show family list</a>

и скрипт в шапке:

function showpanel(option)  {
 this.historyList.show();
};

Любая помощь будет принята с благодарностью! Спасибо!

1 Ответ

1 голос
/ 01 февраля 2012

Код JavaScript на панели не имеет разрешения на что-либо - он не может открыть новую панель и не может связаться с расширением.Вам нужно внедрить скрипт контента в эту панель, который будет связываться с расширением, примерно так:

var menuList = panels.Panel({
  width: 102,
  height: 90,
  contentURL: data.url('list/menu-list.html'),
  contentScriptFile: [data.url('jquery-1.7.1.js'),
                      data.url('list/menu-list.js')],
  onMessage: function(message) {
    if (message == "famlist")
      historyList.show();
  }
});

Скрипт контента menu-list.js должен будет прослушивать щелчки по ссылкам и отправлять сообщениерасширение при необходимости, примерно так:

$(document).ready(function() {
  $("#famlistLink").click(function() {
    self.postMessage("famlist");
  });
});
...