How to Build a Chrome Extension

๐๐๐๐๐๐ ๐ก๐๐๐๐
Search for a command to run...

๐๐๐๐๐๐ ๐ก๐๐๐๐
No comments yet. Be the first to comment.
I'm a Graduate student at UT Arlington. I always feel that taking care of both physically and mentally are essential to our success. So, I start my daily routine at Fitness Recreation Center (gym) and registering slots daily is a hassle and due to co...

You might have seen some people using completely different source labels. Well, today we will see how to change the Twitter source label First, we need to have a Twitter developer account, if you don't have. 1) Just navigate to Twitter Developer web...

We all know, Artificial Intelligence (AI) is one of the most transformative tech evolutions of our times. Well, if you still not aware of what AI is? It is the simulation of human intelligence in machines that are programmed to think like humans and ...

I'm a Indian and I recently moved to the USA to pursue my Master's degree at UT Arlington. So I need to carry some essential documents digitally like passport, health reports and other Government id's to be on the safer side and I don't want others t...

In Machine Learning classification problems, there are often too many factors on the basis of which the final classification is done. These factors are basically variables called features. The higher the number of features, the harder it gets to visu...

Chrome extensions are small HTML, CSS and JavaScript apps that we can install in the chrome browser.
In this tutorial, We are going to build an extension that allows users to get covid19 case details based on the country selected.
Step 1: Create a new directory "dist" and create files under that directory as shown in the picture

Step 2: Create an HTML file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Covid 19</title>
<link rel="stylesheet" href="./style.css" />
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script type="text/javascript" src="index.js" defer></script>
</head>
<body>
<div class="header">Covid 19</div>
<div class="container">
<form class="form-data" autocomplete="on">
<div class="enter-country">
<b>Enter a country name:</b>
</div>
<div>
<input type="text" class="country-name" />
</div><br>
<button class="search-btn">Search</button>
</form>
<div class="result">
<div class="loading">loading...</div>
<div class="errors"></div>
<div class="data"></div>
<div class="result-container">
<p><strong>New cases: </strong><span class="todayCases"></span></p>
<p><strong>New deaths: </strong><span class="todayDeaths"></span></p>
<p><strong>Total cases: </strong><span class="cases"></span></p>
<p><strong>Total recovered: </strong> <span class="recovered"></span></p>
<p><strong>Total deaths: </strong><span class="deaths"></span></p>
<p><strong>Total tests: </strong><span class="tests"></span></p>
<center><span class="safe">Stay Safe and Healthy</span></center>
</div>
</div>
</div>
</body>
</html>
Step 3: Create a js file to handle API calls
const api = "https://coronavirus-19-api.herokuapp.com/countries";
const errors = document.querySelector(".errors");
const loading = document.querySelector(".loading");
const cases = document.querySelector(".cases");
const recovered = document.querySelector(".recovered");
const deaths = document.querySelector(".deaths");
const tests=document.querySelector(".tests");
const todayCases=document.querySelector(".todayCases");
const todayDeaths=document.querySelector(".todayDeaths");
const results = document.querySelector(".result-container");
results.style.display = "none";
loading.style.display = "none";
errors.textContent = "";
// grab the form
const form = document.querySelector(".form-data");
// grab the country name
const country = document.querySelector(".country-name");
// declare a method to search by country name
const searchForCountry = async countryName => {
loading.style.display = "block";
errors.textContent = "";
try {
const response = await axios.get(`${api}/${countryName}`);
if(response.data ==="Country not found"){ throw error; }
loading.style.display = "none";
todayCases.textContent = response.data.todayCases;
todayDeaths.textContent = response.data.todayDeaths;
cases.textContent = response.data.cases;
recovered.textContent = response.data.recovered;
deaths.textContent = response.data.deaths;
tests.textContent = response.data.totalTests;
results.style.display = "block";
} catch (error) {
loading.style.display = "none";
results.style.display = "none";
errors.textContent = "We have no data for the country you have requested.";
}
};
// declare a function to handle form submission
const handleSubmit = async e => {
e.preventDefault();
searchForCountry(country.value);
console.log(country.value);
};
form.addEventListener("submit", e => handleSubmit(e));
We have an asynchronous function called searchForCountry and within that function, we can use async-await. Async await allows us to stop executing code that is dependent, while we wait for the response from a server. By using the await keyword in front of a piece of code we can get the rest of our code to stop executing while that piece of code executes.
In this example, we await a response from our GET request before setting that response to our articles variable.
Axios is a very popular JavaScript library you can use to perform HTTP requests, that works in both Browser and Node.js platforms. It supports all modern browsers, including support for IE8 and higher. It is promise-based, and this lets us write async/await code to perform XHR requests very easily.
Step 4: You can also add css to your HTML file
Step 5: Create manifest.json and add following code. This is the file that contains information on how Chrome should handle the extension.
{
"manifest_version": 2,
"name": "Covid19",
"version": "1.0.0",
"description": "Provides the cases details regarding Covid19 with respective to any Country",
"browser_action": {
"default_popup": "index.html"
},
"icons":{
"16": "./icons/16covid-19.png",
"64": "./icons/64covid-19.png",
"128": "./icons/128covid-19.png"
},
"content_security_policy": "script-src 'self' https://unpkg.com ; object-src 'self'"
}
manifest_version, name and version are important and MUST be declared. The extension must have a manifest_version of 2 to work with the latest Chrome browsers, you can give it whatever name/version you wish.

I recently submitted this extension for review and it's pending for approval.
Hope Google approves it :)

Here is the working video of Covid19 Extension
Hope it's useful
If you like my content, please consider supporting me