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