我有一个SDK扩展,可以在页面上注入(inject)脚本。在插件选项中,有1个bool用于打开或关闭该脚本。

var pageMod = require("sdk/page-mod");
var data = require("sdk/self").data;

var prefs = require("sdk/simple-prefs").prefs;
function onPrefChange(prefName) {
    if (prefs.showMAC) {
        //if true - apply pagemod
        pageMod.PageMod({
            include: "*.mydomen.net",
            attachTo: ["existing", "top"],
            contentScriptFile: data.url("proxy_open.js")
        });
    }else{
        //if false - remove pagemod
    }
}

require("sdk/simple-prefs").on("showMAC", onPrefChange);

我是所有这些扩展知识的新手,无法找到有关如何正确应用destroy()的任何信息,有人可以解释如何正确执行此操作吗?我试过了pageMod.destroy();,它给出了“not a function”错误。

最佳答案

先制作var mod = null,然后再制作mod = pageMod就像是一种魅力。

var mod = null;
var prefs = require("sdk/simple-prefs").prefs;
function onPrefChange(prefName) {
    if (prefs.showMAC) {
        mod = pageMod.PageMod({
            include: "*.mydomen.net",
            attachTo: ["existing", "top"],
            contentScriptFile: data.url("proxy_open.js")
        });
    }else{
        mod.destroy();
    }
}

require("sdk/simple-prefs").on("showMAC", onPrefChange)

10-07 17:41