Search code examples
javascriptfirefoxfirefox-addon

Getting current browser url in Firefox Addon


I within a panel and I want to get the current browser URL. Nothing so far works. Here's what I've tested:

Only thing that even returns anything, I get something like resource://jid0-18z0ptaugyu0arjkaoywztggyzg-at-jetpack/ and then my current panel resource. Obviously this is a scope problem but I don't know how to refer to the actual browser.

window.location.href 

I've tried literally everything in the biggest Stack Overflow thread on this: Get current page URL from a firefox sidebar extension. None of them return anything.

If it helps, I am using the Firefox Addon Builder.


Solution

  • // you need to use this service first
    var windowsService = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator);
    
    // window object representing the most recent (active) instance of Firefox
    var currentWindow = windowsService.getMostRecentWindow('navigator:browser');
    
    // most recent (active) browser object - that's the document frame inside the chrome
    var browser = currentWindow.getBrowser();
    
    // object containing all the data about an address displayed in the browser
    var uri = browser.currentURI;
    
    // textual representation of the actual full URL displayed in the browser
    var url = uri.spec;