我刚刚开始使用谷歌Chrome扩展程序开发,我的项目涉及制作一个扩展程序,点击该链接时会打印当前打开的页面/选项卡的URL。
因此,如果我在谷歌的主页上并点击我的扩展名,我需要在扩展名中输入“https://www.google.com/”作为我的输出。
我需要使用javascript来执行此操作,并且无法找到我理解的代码以及执行此操作的代码。我读到了关于使用“window.location”和“document.href”的东西,但是这不会给我只是我的扩展名而不是当前标签的网址吗?
请帮我开始吧提前致谢。
尝试
chrome.tabs.getCurrent(function(tab){
console.log(tab.url);
}
);
请注意,您必须在清单文件中设置tabs
权限
"permissions": [
"tabs"
],
http://developer.chrome.com/extensions/tabs.html
或点击扩展按钮[activeTab
]发起的Xan许可
https://developer.chrome.com/extensions/activeTab
如果以上不起作用试试
chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
console.log(tabs[0].url);
});
使用javascript,如果您没有在弹出窗口中使用它,它将起作用,因为弹出窗口中的javascript将返回弹出窗口的url因此,在弹出窗口中,您必须使用Chrome选项卡API并在Chrome清单中设置权限。
chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
console.log(tabs[0].url);
});
因此,最好的方法是使用Chrome标签API
您需要注意“当前标签”的含义。如果用户打开了多个窗口,每个窗口都有多个选项卡,Chrome会将“当前窗口”定义为运行使用chrome.tabs
API的内容脚本的窗口。这发生在我身上,我通过引用不是“当前”窗口而不是最后一个窗口来解决它:
chrome.tabs.query({ active: true, lastFocusedWindow: true }, function (tabs) {
// Do something
});
参考文献:
https://developer.chrome.com/extensions/windows#current-window https://developer.chrome.com/extensions/tabs#method-query
希望能帮助到你!
更新:此方法现已弃用,因此请不要使用它
在我的情况下,任何上述都没有奏效。所以我用过这个:
chrome.tabs.getSelected(null, function(tab) {
console.log(tab.url)
})
它工作得很好!希望能帮助到你。
这对我有用,试一试
chrome.tabs.query({
active: true,
lastFocusedWindow: true
}, function(tabs) {
// and use that tab to fill in out title and url
var tab = tabs[0];
console.log(tab.url);
alert(tab.url);
});
不要使用getSelected
根据Chrome Developer Docs:自Chrome ver.33以来,chrome.tabs.getSelected
已被弃用
而是使用:
chrome.tabs.query({active:true}, __someCallbackFunction__)
喜欢穆萨的第二个建议。
最简单的方法:
console.log('current url'+ window.location)