#firefox-addon #firefox-addon-sdk
#firefox-аддон #firefox-addon-sdk
Вопрос:
Приведенный ниже код работал до Firefox 30. Теперь я не могу изменить параметры, прикрепленные к моему PageMod, вызвав функцию newOptions()
.
Это известная ошибка? Любые предложения, чтобы заставить его работать с Firefox> = 30?
var pageMod = require('sdk/page-mod');
exports.main = function(type) {
var mod = pageMod.PageMod({
include: ['http://example.com/*'],
contentScriptWhen: 'ready',
attachTo: ['existing', 'top'],
contentScriptFile: data.url('js/file.js'),
contentScriptOptions: {
options: ...
},
onAttach: function(opt) {
// Save user preferences
opt.port.on('save', function(o) {
newOptions(); // This works OK
});
}
});
function newOptions(){
// change the contentScriptOptions [This does not work anymore]
mod.contentScriptOptions = {
options:...
};
// cause the page-mod to re-evaluate
require("tabs").activeTab.reload();
}
};
Комментарии:
1. Не могли бы вы зарегистрировать ошибку здесь: bugzilla.mozilla.org /…
2. @canuckistani, сделал это несколько часов назад. Смотрите мой ответ ниже. Спасибо.
Ответ №1:
См. https://bugzilla.mozilla.org/show_bug.cgi?id=1027605:
Изменение параметров содержимого после создания экземпляра PageMod является неподдерживаемой, недокументированной функцией. тот факт, что он когда-либо работал, вероятно, был каким-то побочным эффектом детали реализации, которую мы, по-видимому, изменили между fx29 и 30.
если ваши настройки могут измениться во время запуска вашего дополнения, вам следует переключиться на сохранение их в глобальной переменной и использование сообщений для отправки этих данных в сценарий содержимого.
другими словами, это, скорее всего, ОШИБКА.