Search code examples
javascriptfirefox-addon-sdk

How to apply pagemod destroy() method?


I have an SDK extension that injects script on pages. In the addon options there is 1 bool that used to turn that script on or off.

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);

I'm new to all that extensions stuff and can't find any information about how to apply destroy() correctly, can anyone explain how to do this correctly? I've tried pageMod.destroy(); that gives "not a function" error.


Solution

  • Making var mod = null and then mod = pageMod works like a charm.

    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)