自Firefox 30以来无法动态更改PageMod ContentScriptOptions

时间:2014-06-19 11:56:29

标签: firefox-addon firefox-addon-sdk

以下代码适用于Firefox 30.现在,我无法通过调用函数newOptions()来更改附加到pageMod的选项。

这是一个已知的错误吗?任何使其适用于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 个答案:

答案 0 :(得分:1)

请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=1027605

  

创建PageMod实例后更改contentScriptOptions是   一个不受支持的,未记录的功能。它曾经工作的事实是   可能是实现细节的一些副作用,我们   显然在fx29和30之间发生了变化。

     

如果你的偏好可以在你的插件运行期间改变,那么你   应切换到将它们保存在全局变量中并使用消息   将该数据发送到内容脚本。

     换句话说,这很可能是WONTFIX。