How to get the currently opened tab's URL in my page action popup?
Solution 1:
Use chrome.tabs.query
with the following parameters:
- queryInfo object:
-
active: true
- To get the active tab -
lastFocusedWindow: true
- To select the active window
-
- callback function:
This function receives one argument: An array of matched tabs. Since only one window can be active, and one tab within this window, the array has only one element. This element is an object with theTab
signature.
Code snippet:
// Do NOT forget that the method is ASYNCHRONOUS
chrome.tabs.query({
active: true, // Select active tabs
lastFocusedWindow: true // In the current window
}, function(array_of_Tabs) {
// Since there can only be one active tab in one active window,
// the array has only one element
var tab = array_of_Tabs[0];
// Example:
var url = tab.url;
// ... do something with url variable
});
The activeTab
permission is sufficient for this to work.
Solution 2:
You can also use promises for a cleaner way of retrieving a tab:
getCurrentTab().then(function(tab){
// Do something w/tab
});
function getCurrentTab(){
return new Promise(function(resolve, reject){
chrome.tabs.query({
active: true, // Select active tabs
lastFocusedWindow: true // In the current window
}, function(tabs) {
resolve(tabs[0]);
});
});
}