从firefox边栏扩展获取当前页面URL

Hin*_*wen 22 url firefox xul sidebar

我正在为Firefox编写侧边栏扩展,需要一种方法来获取当前页面的URL,以便我可以针对数据库进行检查并显示结果.我怎样才能做到这一点?

ray*_*ymi 20

我在寻找同一问题的答案时偶然发现了这篇文章.

实际上我认为这很简单

alert(window.content.location.href)
Run Code Online (Sandbox Code Playgroud)

另请参见https://developer.mozilla.org/en/DOM/window.content

  • 如果你覆盖主浏览器窗口(browser.xul),这似乎有效,但我不知道它是否适用于其他情况. (3认同)

wim*_*ica 15

window.top.getBrowser().selectedBrowser.contentWindow.location.href;
Run Code Online (Sandbox Code Playgroud)

可能会工作,否则我认为你需要使用:

var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIWebNavigation)
                   .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                   .rootTreeItem
                   .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIDOMWindow);

mainWindow.getBrowser().selectedBrowser.contentWindow.location.href;
Run Code Online (Sandbox Code Playgroud)

  • gBrowser.contentWindow.location.href也可以 (5认同)

Kap*_*pil 5

这对我来说似乎很好用

function getCurrentURL(){

    var currentWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser");

    var currBrowser = currentWindow.getBrowser();
    var currURL = currBrowser.currentURI.spec;

    return currURL;
}
Run Code Online (Sandbox Code Playgroud)