How Does A Chrome Extension Work? (Web Development)

If you need a more in-depth course, try our Teachable courses.

Use discount code: ANOBJ for 20% off select courses

If you’re comfortable with Web Development, we offer a free quick primer tutorial you can view at the bottom of this article.

There are 5 parts to a Chrome extension:

1. the manifest file
2. the background script
3. the foreground script
4. the popup page
5. the options page

1.
Everything begins with the manifest file…

How, where, and when our extension interacts with the user’s browser, is all contained within the manifest.

The manifest establishes the name, version, and description of our chrome extension as well as the background script, popup and options pages.
It also establishes where we can inject foreground scripts (more on that later…).

Icons used:

// manifest.json{
"name": "obj ext",
"description": "my ext",
"version": "0.1.0",
"manifest_version": 2,
"icons": {
"16": "./obj-16x16.png",
"32": "./obj-32x32.png",
"48": "./obj-48x48.png",
"128": "./obj-128x128.png"
},
"background": {
"scripts": ["./background.js"]
},
"options_page": "./options.html",
"browser_action": {
"default_popup": "popup.html"
},
"permissions": [
"tabs",
"https://www.google.com/*",
"storage"
]
}

2.
The background script (background.js) is a JavaScript script that runs once our extension either gets installed or the user refreshes the extension manually.

THIS IS CRUCIAL TO NOTE

The background script doesn’t actually have access to any of the web pages your user is viewing, so your background script can’t manipulate the DOM.

So how do we get our chrome extension to do stuff on the user’s web page then?

That’s where the foreground script comes in.
Our background script has the ability to inject foreground scripts, as well as CSS if you want, into the page.

This is how we can manipulate the DOM of a web page with a chrome extension.

How do we inject our foreground script into the foreground?
In the background.js script…

…where we have a listener watching what we do with our tabs, if the current tab we’re on is the Google homepage, we inject our script into that tab. The ‘null’ indicates the current tab we’re viewing.

From there, our foreground.js script acts like any other script influencing an index.html page. We have access to the window and document(DOM).

We can make the Google homepage’s logo spin if we wanted to.

3.
From there, our foreground.js script acts like any other script influencing an index.html page.

In the foreground.js we write…

…in the mystyles.css we write..

4.
The popup page is optional.
The popup page is what shows when the user clicks on our extension icon in the top right.

It’s an html page with a script attached if you want.

5.
The options page is just like the popup page.
It’s what the user sees when they navigate to their extensions tab and click for the options.

It’s also an html page with a script attached if you want.

So, it’s this relationship between the background and foreground — just like a front-end and back-end — that ties a chrome extension together.

If you want to check out a more in-depth guide, including how the foreground communicates with the background as well as state management in a Chrome extension, check out my full video tutorial on YouTube, An Object Is A.

Be sure to follow us on Instagram and Twitter to keep up with our latest Web Development tutorials.

How To Build A Chrome Extension (2020 Web Development)

Learning to code…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store