Невозможно динамически изменять параметры содержимого скриптов PageMod начиная с Firefox 30

#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.

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

другими словами, это, скорее всего, ОШИБКА.