开发者

Is there a way to inject a CSS on a specific website using nsIStyleSheetService?

开发者 https://www.devze.com 2023-02-13 09:58 出处:网络
I am trying to inject a stylesheet file using nsIStyleSheetService. When I do that it injects the style on all pages, but I want to target jus开发者_如何学运维t some websites.

I am trying to inject a stylesheet file using nsIStyleSheetService.

When I do that it injects the style on all pages, but I want to target jus开发者_如何学运维t some websites.

Is it possible?

My code:

LoadStyleSheet = function(source) {
     var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
                .getService(Components.interfaces.nsIStyleSheetService);
     var ios = Components.classes["@mozilla.org/network/io-service;1"]
                .getService(Components.interfaces.nsIIOService);
     var uri = ios.newURI("chrome://addon/content/css/" + source, null, null);

     if(!sss.sheetRegistered(uri, sss.AGENT_SHEET))
         sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
};

and

if (/^https?:\/\/[^\/]+google.*/i.test(window.location.href))
{
    LoadStyleSheet("config.css"); // register the style on all pages
    // while my target is just Google
}


First of all, you likely want to specify USER_SHEET instead of AGENT_SHEET. Secondly, you have to specify what is applied in your stylesheet like this code. More information can be found here.

0

精彩评论

暂无评论...
验证码 换一张
取 消