I am almost finished with building a simple Chrome Extension, and the last thing I want to add to it is the closing of the current tab.
What this extension does is, when it detects a Zoom join meeting page, it clicks the button so that the Zoom application opens. I want it to close the Zoom join page after that.
There are many questions that show how to do it, but I can't find a full example on how to do it. In the documentation on how to send messages, it has three code blocks and I can't understand what goes where and how I can use it to close the current tab.
This question says you need the tab's ID to close it, so I want to be able to get the ID and then close the page (seems I need to pass a message to the background page).
If you wanna to use
chrome.tabs
then pass message from content_script to background script and play withchrome.tabs
.
Here's my current extension:
manifest.json
{
"name": "Auto Zoom Join",
"version": "1.0.0",
"manifest_version": 2,
"author": "",
"description": "Automatically joins zoom meetings.",
"permissions": ["tabs"],
"content_scripts":
[{
"matches": ["https://*.zoom.us/j/*"],
"js": ["join.js"]
}]
}
join.js
if(location.href.length-(location.href.indexOf("j/")+11)-location.hash.length>0){
document.getElementsByClassName("_1FvRrPS6")[0].click();
}
// you can ignore above line; just detects if valid zoom join meeting page, clicks button
chrome.tabs.query({
currentWindow:true,
active:true
},function(tabs){
chrome.tabs.remove(tabs[0].id);
});
/*
The above line doesn't work. It only works in background page, so I need to
somehow send a message to the background page.
*/
So basically how do I send a message to the background page which closes the Chrome tab?
You can send message to the background script from content script by using the chrome.runtime.sendMessage
API.
chrome.runtime.sendMessage({ msg: "tab_close_msg", time: time }, function (response) {
console.log("response from the bg", response)
});
And You can receive the message from the background page by using the chrome.runtime.onMessage.addListener
API
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
if (request.message === "tab_close_msg") {
// add your code to close tab
}
})