Új hozzászólás Aktív témák

  • inf3rno

    nagyúr

    Fejlesztett már valaki közületek firefox plugint? Van egy chrome extension, amiből 3 függvényt szeretnék firefox-ra átírni meg persze a manifest.json-t package.json-ra. Elvileg a maradék kód rendben van. Próbáltam keresgélni, de nehéz copy-paste kódot találni, többszáz oldal dokumentációt meg ezért elolvasni, hát nem éri meg.

    Ilyesmik kellenének:
    chrome.extension.getURL("relative/path");

    chrome.browserAction.onClicked.addListener(function() {
    window.open("http://domain.com/", "_new")
    });

    chrome.webRequest.onBeforeRequest.addListener(function() {
    return {
    cancel: true
    }
    }, {
    urls: ["*://domain.com/main.js*"]
    }, ["blocking"]);

    A getURL() elsősorban a frontend részéhez kell, hogy be tudjon injektálni egy html meg egy js fájlt xhr-el meg script tag-el.

    Az onClicked-nél a toolbar gombra kattintást nézi, annyit csinál, hogy megnyitja az url-t új ablakba, az onBeforeRequest meg letiltja az eredeti oldal betöltését. Ezek mellett a manifest.json-ban van egy match a domain-re, ami beteszi az onClicked-et és az onBeforeRequest-et a background-ba szóval azok a böngésző indításakor futnak, a getURL-es részt meg csak ha stimmel a domain, akkor indítja.

    Egyedül a harmadikra sikerült megoldást találnom, de az is vicc kategóriás, hogy mennyire el van bonyolítva:

    const Ci = Components.interfaces;
    const Cu = Components.utils;

    Cu.import("resource://gre/modules/Services.jsm");
    Cu.import("resource://gre/modules/XPCOMUtils.jsm");

    var observer = {
    QueryInterface: XPCOMUtils.generateQI([
    Ci.nsIObserver,
    Ci.nsISupportsWeakReference
    ]),

    observe: function(subject, topic, data)
    {
    if (topic == "http-on-modify-request" &&
    subject instanceof Ci.nsIHttpChannel)
    {
    var uri = subject.URI;
    if (uri.host == "domain.com" && /main\.js/.test(uri.path))
    subject.cancel();
    }
    }
    };

    Services.obs.addObserver(observer, "http-on-modify-request", true);

    Bármi ötlet a másik kettőre meg a package.json-ra?

Új hozzászólás Aktív témák