如何从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?

下一篇: Enable chrome extension without clicking