В Chrome есть что-то под названием "Действия страницы" , и я примерно пытаюсь воспроизвести эту функциональность с помощью Firefox Addon SDK / Jetpack.Вероятно, есть лучший подход, чем тот, который я пробовал до сих пор, и я открыт для предложений.
Используя tabs
, я могу прослушивать готовые вкладки и активировать события, и если вкладкиURL соответствует, виджет аддона должен быть включен;если нет, отключено.Я дошел до того, что могу изменить значок, когда это уместно, но я бы тоже хотел отключить панель.
Стратегия 1: украсть событие click и показывать панель только в том случае, если мына правой странице;в противном случае игнорируйте.Проблема в том, что в соответствии с документами , ручное отображение панели приводит к тому, что она не привязывается, ошибка, которая не имела большого прогресса на ней .
Стратегия 2:Установите contentURL
на null
при отключении.Получите сообщение об ошибке, что он не является URL-адресом.
Стратегия 3: используйте другой документ HTML для отключенного состояния.Установка panel.contentURL
для другого URL не работает после перехода на другую страницу?
Вот код:
const widgets = require("widget");
const Panel = require("panel").Panel;
const tabs = require("tabs");
const data = require("self").data;
const prefs = require("simple-prefs").prefs;
var panel = Panel({
width: 480,
height: 640,
contentURL: data.url("panel.html"),
contentScriptFile: [data.url('jquery.min.js'), data.url('panel.js')],
onMessage: function (msg) { console.log(msg) }
});
var widget = widgets.Widget({
id: "icon",
label: "Export",
contentURL: data.url("icon.png"),
panel: panel
});
function enable() {
widget.contentURL = data.url('icon.png');
panel.contentURL = data.url("panel.html");
}
function disable() {
widget.contentURL = data.url('icon_disabled.png');
panel.contentURL = data.url("panel_disabled.html");
}
function on_change_tab(tab) {
console.log(tab.url);
if (/http:\/\/example.com\/.*/.exec(tab.url)) {
console.log('ENABLE');
enable();
} else {
console.log('DISABLE');
disable();
}
console.log(panel.contentURL);
}
tabs.on('ready', on_change_tab);
tabs.on('activate', on_change_tab);
Связано, но должна ли быть проблема с привязкой? Как перезагрузить всплывающую панель виджетов с помощью Firefox Addon SDK?