如何从Google Chrome扩展程序获取当前标签的网址?
我对Google Chrome扩展程序很有趣,我只想知道如何将当前选项卡的URL存储在变量中?
更新:现在不推荐使用chrome.tabs.getSelected()
方法。
获取当前选项卡的URL的推荐方式是使用chrome.tabs.query()
。
一个示例用法:
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
});
这要求您请求访问扩展清单中的chrome.tabs
API:
"permissions": [ ...
"tabs"
]
需要注意的是,“当前标签”的定义可能因您的分机的需求而异。
当您想要访问用户关注的窗口(通常是最上面的窗口)中的当前选项卡时,在查询中设置lastFocusedWindow: true
是适当的。
通过设置currentWindow: true
,您可以在当前执行扩展代码的窗口中获取当前选项卡。 例如,如果您的扩展程序创建一个新的窗口/弹出窗口(更改焦点),但仍希望从运行扩展的窗口访问选项卡信息,这可能会很有用。
在本例中,我选择使用lastFocusedWindow: true
,因为Google会调出currentWindow
可能不总是存在的情况。
您可以使用此处定义的任何属性进一步优化选项卡查询:chrome.tabs.query
一位朋友回答我的问题。
首先,您必须设置选项卡API的权限:
"permissions": [
"tabs"
]
并存储URL:
chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});
问题是chrome.tabs.getSelected是异步的。 下面的代码通常不会按预期工作。 当它被写入控制台时,'tablink'的值仍然是未定义的,因为getSelected尚未调用重置该值的回调函数:
var tablink;
chrome.tabs.getSelected(null,function(tab) {
tablink = tab.url;
});
console.log(tablink);
解决方案是将代码包装到您将在函数中使用该值并使其由getSelected调用的位置。 通过这种方式,您可以保证始终有一个值集,因为您的代码在执行之前必须等待提供的值。
试试像这样:
chrome.tabs.getSelected(null, function(tab) {
myFunction(tab.url);
});
function myFunction(tablink) {
// do stuff here
console.log(tablink);
}
链接地址: http://www.djcxy.com/p/91125.html
上一篇: How can I get the URL of the current tab from a Google Chrome extension?