我制作了一个插件,它创建了一个切换按钮和一个附加到其上的面板,该面板有一个启用/禁用按钮,单击该按钮将向 main.js
发出“激活/停用”消息.
当 main.js 收到“deactivate”消息时,它会调用 page-mod 上的 destroy 方法,并且 contentScript 被禁用,并且对原始文档所做的所有更改都会恢复。
但是,当 main.js 收到激活消息时没有任何反应,它会创建 page-mod,但不会将其注入(inject)到目标文档,除非我重新加载页面
如何在不重新加载页面的情况下激活并注入(inject) 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;
}
});
}
});
最佳答案
options.attachTo = ["现有", "顶部"]
关于javascript - 如何在收到消息时重新加载 contentScript (page-mod)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545767/