以下代码适用于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();
}
};
答案 0 :(得分:1)
请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=1027605:
创建PageMod实例后更改contentScriptOptions是 一个不受支持的,未记录的功能。它曾经工作的事实是 可能是实现细节的一些副作用,我们 显然在fx29和30之间发生了变化。
如果你的偏好可以在你的插件运行期间改变,那么你 应切换到将它们保存在全局变量中并使用消息 将该数据发送到内容脚本。
换句话说,这很可能是WONTFIX。