我做了一个插件,创建了一个togglebutton和一个附加到它的面板,面板有一个启用/禁用按钮,单击该按钮将发出一个"激活/停用"发送给main.js
的消息。
当main.js收到"停用"消息它调用page-mod上的destroy方法,并禁用contentScript,并恢复对原始文档所做的所有更改。
然而,当main.js收到激活消息时没有任何反应,它会创建page-mod但它不会将它注入目标文档,除非我重新加载页面
如何在不重新加载页面的情况下激活和注入page-mod contentScript?
Main.js:
var { ToggleButton } = require('sdk/ui/button/toggle');
var panels = require("sdk/panel");
var self = require("sdk/self");
var tabs = require('sdk/tabs');
const { PageMod } = require("sdk/page-mod");
var button = ToggleButton({
id: "my-button",
label: "my button",
icon: "./icon-16.png",
onChange: function(state) {
if (state.checked) panel.show({ position: {top: 10, right: 45} });
}
});
var options = {
include: "https://www.example.com/*",
contentScriptWhen: "end",
contentStyleFile: self.data.url("style.css"),
contentStyle: ["rule1", "rule2", ...],
attachTo : ["top"]
};
var mod = PageMod(options);
var panel = panels.Panel({
contentURL: self.data.url("popup.html"),
contentScriptFile: self.data.url("popup.js"),
contentScriptWhen: "ready",
onHide: function(){button.state('window', {checked: false});},
onAttach: function() {
panel.port.on('setStatus', function(status) {
if (status && !mod) mod = PageMod(options);
else {
if (mod) mod.destroy();
mod = null;
}
});
}
});
答案 0 :(得分:1)
options.attachTo = ["existing", "top"]