Javascript 在Firefox插件中获取当前浏览器url

Javascript 在Firefox插件中获取当前浏览器url,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,我在一个面板中,我想得到当前的浏览器URL。到目前为止一切都不起作用。以下是我测试的内容: 唯一能返回任何东西的东西,我得到了类似resource://jid0-18z0ptaugyu0arjkaoywztggyzg-at-jetpack/然后是我当前的面板资源。显然这是一个范围问题,但我不知道如何引用实际的浏览器 window.location.href 我已经尝试了这个最大的堆栈溢出线程中的所有内容:。他们谁也不归还任何东西 如果有帮助,我正在使用Firefox插件生成器。窗口提供当前窗

我在一个面板中,我想得到当前的浏览器URL。到目前为止一切都不起作用。以下是我测试的内容:

唯一能返回任何东西的东西,我得到了类似
resource://jid0-18z0ptaugyu0arjkaoywztggyzg-at-jetpack/
然后是我当前的面板资源。显然这是一个范围问题,但我不知道如何引用实际的浏览器

window.location.href 
我已经尝试了这个最大的堆栈溢出线程中的所有内容:。他们谁也不归还任何东西


如果有帮助,我正在使用Firefox插件生成器。

窗口提供当前窗口top为您提供最外层的框架。

我相信使用SDK中的API
选项卡可以做到这一点:

// 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;
// Get the active tab's title.
var tabs = require("tabs");
console.log("title of active tab is " + tabs.activeTab.title);

API显示,为了检索当前选项卡URL

   var URL = require('sdk/url').URL;
   var tabs = require('sdk/tabs');
   var url = URL(tabs.activeTab.url);

   console.log('active: ' + tabs.activeTab.url);

这将打印到控制台:“active:”

对于插件,您可以使用以下代码从地址栏获取URL

Javascript代码:

function Doit(){
   var link = window.top.getBrowser().selectedBrowser.contentWindow.location.href;
   alert (link); 
}
HTML代码:

<div onclick = "Doit()">Generate URL</div>
生成URL
这将生成浏览器“当前”选项卡上显示的URL。

从侧栏或弹出窗口获取URL 要从中检索URL,请执行以下操作:

然后你需要找到你想要的标签。如果您只需要活动选项卡,则可以使用它

从注入的javascript获取URL 如果您想要后台任务的URL,我建议使用此方法,因为您不需要权限

这将给你一个背景脚本,然后将脚本注入到互联网上几乎所有的网页上

"background": {
    "scripts": ["background.js"]
},

"content_scripts": [
    {
      "matches": ["https://www.*"],
      "js": ["modify-page/URL.js"]
    }
  ],
这将通过URL js注入网页,并将消息发送到后台js以供使用

var service= browser.runtime.connect({name:"port-from-cs"});

service.postMessage({location: document.URL});
这段代码位于您的后台js中,它将在每个新页面发生更改时收集其url

var portFromCS;

function connected(p) {
  portFromCS = p;
  portFromCS.onMessage.addListener(function(m) {
    if(m.location !== undefined){
      console.log(m.location);
    }
  });
}

browser.runtime.onConnect.addListener(connected);

window.top.location.href
返回同样的结果。@anunixercoder我怀疑它是否有效。这是过时的。如果您想在当前Firefox扩展中获取当前URL,只需添加内容脚本()并直接从中请求
document.location
var service= browser.runtime.connect({name:"port-from-cs"});

service.postMessage({location: document.URL});
var portFromCS;

function connected(p) {
  portFromCS = p;
  portFromCS.onMessage.addListener(function(m) {
    if(m.location !== undefined){
      console.log(m.location);
    }
  });
}

browser.runtime.onConnect.addListener(connected);