我在一个面板中,我想获取当前的浏览器URL。到目前为止没有任何作品。这是我测试的内容:
只有那些甚至可以返回任何内容的东西,我得到类似resource://jid0-18z0ptaugyu0arjkaoywztggyzg-at-jetpack/
的东西,然后是我当前的面板资源。显然这是一个范围问题,但我不知道如何引用实际的浏览器。
window.location.href
我已经尝试了最大的Stack Overflow线程中的所有内容:Get current page URL from a firefox sidebar extension。他们都没有回报任何东西。
如果有帮助,我使用的是Firefox Addon Builder。
答案 0 :(得分:7)
// 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;
答案 1 :(得分:2)
我相信使用SDK中的API tabs
可以做到这一点:
// Get the active tab's title.
var tabs = require("tabs");
console.log("title of active tab is " + tabs.activeTab.title);
答案 2 :(得分:2)
从sidebar or popup requires tab permissions
中检索网址"permissions": [
"tabs"
]
然后你需要找到你想要的标签。如果您只想要活动标签,这可以正常工作for anything more advanced I'd look here。
function getPage(){
browser.tabs.query({currentWindow: true, active: true})
.then((tabs) => {
console.log(tabs[0].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中,并会在更改时收集每个新页面的网址。
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);
答案 3 :(得分:1)
API显示为了检索当前标签网址
var URL = require('sdk/url').URL;
var tabs = require('sdk/tabs');
var url = URL(tabs.activeTab.url);
console.log('active: ' + tabs.activeTab.url);
这将打印到控制台:“active:http://www.example.com”
答案 4 :(得分:0)
窗口为您提供当前窗口。 顶部为您提供最外层的框架。
答案 5 :(得分:0)
对于插件,您可以使用以下代码从地址栏中获取网址
Javascript代码:
function Doit(){
var link = window.top.getBrowser().selectedBrowser.contentWindow.location.href;
alert (link);
}
HTML code:
<div onclick = "Doit()">Generate URL</div>
这将生成浏览器当前选项卡上显示的URL。