Помогите мне создать расширение Firefox (компонент Javascript XPCOM)

Я просматривал разные руководства и знаю, что близок к этому, но я теряюсь в деталях реализации, потому что некоторые из они немного устарели и кое-что изменилось по сравнению с Firefox 3. Мой файл Javascript простой, у меня есть две функции startServer () и stopServer . Мне нужно запустить startServer () при запуске браузера и stopServer () при выходе из firefox.

Изменить:

Я обновил свой код рабочим решением ( спасибо Нилу). Следующее находится в MyExtension / components / myextension.js .

Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
const CI = Components.interfaces, CC = Components.classes, CR = Components.results;

// class declaration
function MyExtension() {}

MyExtension.prototype = {
    classDescription: "My Firefox Extension",
    classID:          Components.ID("{xxxx-xxxx-xxx-xxxxx}"),
    contractID:       "@example.com/MyExtension;1",
    QueryInterface: XPCOMUtils.generateQI([CI.nsIObserver]),

    // add to category manager
    _xpcom_categories: [{
        category: "profile-after-change"
    }],

    // start socket server
    startServer: function () { /* socket initialization code */ },

    // stop socket server
    stopServer: function () { /* stop server */ },


    observe: function(aSubject, aTopic, aData) 
    {
        var obs = CC["@mozilla.org/observer-service;1"].getService(CI.nsIObserverService);

        switch (aTopic) 
        {
            case "quit-application":
                this.stopServer();
                obs.removeObserver(this, "quit-application");
                break;
            case "profile-after-change":
                this.startServer();
                obs.addObserver(this, "quit-application", false);
                break;
            default:
                throw Components.Exception("Unknown topic: " + aTopic);
        }
    }
};

var components = [MyExtension];

function NSGetModule(compMgr, fileSpec) {
    return XPCOMUtils.generateModule(components);
}
9
задан 14 revs 23 May 2017 в 02:14
поделиться