javascript - 如何在收到消息时重新加载 contentScript (page-mod)?

标签 javascript firefox-addon firefox-addon-sdk

我制作了一个插件,它创建了一个切换按钮和一个附加到其上的面板,该面板有一个启用/禁用按钮,单击该按钮将向 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/

相关文章:

javascript - 在Firefox附加SDK扩展中的“onInstalled”上执行脚本

javascript - 水平条形图上的 Flot 数据标签

c++ - 有人如何使用第三方库将其包含在 Firefox 插件/扩展中?

javascript - 跟踪 JavaScript 中 URL 的重定向路径

javascript - 在 Firefox 中覆盖 html?

firefox - 如果选项卡在某个域中打开,如何让插件/扩展程序向 Firefox 地址栏添加图标/按钮?

javascript - 具有多个动画的 .animate 队列

javascript - 如何使用 jQuery 按数据日期属性选择元素?

javascript - Jquery-查找具有给定样式属性的元素

c++ - WM_GETICON 不工作 (Windows)