Josh
Josh

Reputation: 366

Display current URL in a chrome extension

After doing some research, the code that I have come up with is this:

var outUrl;
// first get the windowid
chrome.windows.getCurrent(function(window) {
    // then get the current active tab in that window
    chrome.tabs.query({
        active: true,
        windowId: window.id
    }, function (tabs) {
        var tab = tabs[0];
        document.write(tab.url)
    });
});

This is in a javascript file which is called from my popup html file. It does not, however display the URL of the current website, instead it displays nothing.

I have found multiple posts about this on this and other websites but I haven't been able to implement any of the supposed solutions.

Any help would be greatly appreciated.

Upvotes: 11

Views: 34817

Answers (3)

PAEz
PAEz

Reputation: 8542

Maybe this is what your looking for....

chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
   function(tabs){
      alert(tabs[0].url);
   }
);

And the tabs permission needs to be set in the manifest...

manifest.json

"permissions": [ 
  "tabs"
]

Upvotes: 36

Sohel Shekh
Sohel Shekh

Reputation: 301

Solution:

Get the URL of currently selected tab for Chrome Extension This code is to get parts of URL, because in tabs[0].url we cannot get parts of URL like host, hostname, origin, port, etc...

chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
let link = document.createElement('a');
link.href = tabs[0].url;
})

Further using basic js to get its part: link.host = "password remember.web.app" You can use other like link.hostname, link.hash, link.host, link.href, link.origin, .link.pathname, link.protocol, link.search

Hope it solves your problem!

Upvotes: 0

user12
user12

Reputation: 197

I had the same issue. I wrote this extension to display the current URL user is browsing now in the popup.

manifest.js

"permissions": [ 
  "tabs"
]

popup.js

function getCurrentTabUrl(callback) {  
  var queryInfo = {
    active: true, 
    currentWindow: true
  };

  chrome.tabs.query(queryInfo, function(tabs) {
    var tab = tabs[0]; 
    var url = tab.url;
    callback(url);
  });
}

function renderURL(statusText) {
  document.getElementById('status').textContent = statusText;
}

document.addEventListener('DOMContentLoaded', function() {
  getCurrentTabUrl(function(url) {
    renderURL(url); 
  });
});

Upvotes: 16

Related Questions