Browser extensions - Icon action

I'm a full-stack developer from South Africa 🇿🇦. I love writing about JavaScript, HTML and CSS.
Search for a command to run...

I'm a full-stack developer from South Africa 🇿🇦. I love writing about JavaScript, HTML and CSS.
No comments yet. Be the first to comment.
We already created a basic extension that made all the websites we visit pink, but what if we want that action to only happen when we click a button inside our popup extensions? Well, in this article, we'll learn just that, and even better, we base t...
Most of you know me for my consistency, a golden arrow in my blog series. I've written 1000 articles in 1008 days! Almost an article a day, and my honeymoon was the only holiday I ever took. I'm super proud of this achievement; it has been a fantasti...

It's not the first time I'll be talking about community. I think it's an essential aspect of any successful tool. This shows in my previous explorations of Astro, Medusa, and now Vendure as well. All these products thrive in a super open, welcoming, ...

The cool part about Vendure is how easy it is to set up and how abstract each layer is. Basically, we get the following elements: External database Server Worker Admin UI Frontend While this is amazing, it also brings a bit of complexity when it co...

The previous article looked at customizing Vendure on a data and process level. In this article, we'll look at customizing emails, as they are often a big part of a webshop system. We'll be looking at two different layers of customization for customi...

Even though Vendure is a pretty significant project out of the box, in some cases, we might want to go in and modify some elements to work to our specific use case. In this article, I'll take a high-level look at some elements we can customize within...

So far, we have had a couple of articles around popup extensions. These typically thrive on the icon click action.
But what about our new tab experience? When clicking on that icon, nothing happens.
Let's fix that.
Note: If you like to work along with this article, use the following GitHub branch as your starting point.
We want a new tab to open when the user clicks the toolbar icon.
This action, funny enough, is not defined in the manifest. Instead, we have to log a manual action in a background script.
As we don't use one for our new tab, let's add the background.js file inside your public folder.
Then open up your manifest.json and register the background script as a service worker (version 3).
While here, we also need to define an empty action object. This will ensure we can use actions.
{
"action": {},
"background": {
"service_worker": "background.js"
}
}
Now head back to the background script. We will need to register an action for the browserAction.
chrome.action.onClicked.addListener(() => {
chrome.tabs.create({ url: './new-tab.html', active: true });
});
We register an on-click handler on the action attribute (the icon). When the user clicks this icon, we navigate them to a new tab, with our new-tab.html as the source.
Since this is a relative link, this will work.
When the user clicks the icon, they navigate to a new tab with our default page.
You can find the completed code samples in the following GitHub branch.
Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter