1

I am new to chrome extension development. I am writing a chrome extension that will inject CSS into the page. I've been successful in doing this by specifying the css file in manifest.json.

I now want to apply different css (files) depending on a link or button selected on a popup triggered through a browser_action. So clicking link 1 will apply style-red.css and clicking link 2 will apply style-blue.css. A third "reset" button should reset css back to its original state (removing the custom style red or blue css files).

My manifest.json is as follows:

{
  "name": "Redesign",
  "version": "1.0",
  "manifest_version": 2,
  "content_scripts": [
    {
      "matches": ["*://*.my-site.com/*"],
            "js": ["jquery-3.1.0.min.js", "script.js"]
    }
    ],
    "browser_action": {
        "default_icon": "icon.png",
    "default_popup": "popup.html"
    },
  "permissions": [
        "tabs", "*://*.my-site.com/*"
   ]
}

My current approach is to have a listener in script.js listening for the button pressed in popup.html. Depending on the button pressed, the following script.js will add the corresponding CSS file into my-site.com using the jquery below:

$(document).ready(function() {
var path = chrome.extension.getURL('style-red.css');
$('head').append($('<link>')
    .attr("rel","stylesheet")
    .attr("type","text/css")
    .attr("href", path));
});

I tried to use the above jquery in script.js (without the browser_action in the manifest.json) thinking script.js will get automatically loaded but the CSS does not get applied to my-site.com. What am I doing wrong or is there simpler Javascript without the need for a full jquery library to be added?

And even if the jquery works, how do I apply a different CSS file based on the choice in popup.html as well as reset the css back to its original styling upon user choice?

zeeshan
  • 719
  • 2
  • 7
  • 13

1 Answers1

1
  1. To insert css file in content scripts, you need to declare the css file as web_accessible_resources
  2. To dynamically insert css files, see chrome.tabs.insertCSS, it can be called in extension context, such as popup page.
Haibara Ai
  • 10,703
  • 2
  • 31
  • 47