43

该代码旨在将用户正在查看的页面的当前选项卡对象输出到控制台,但它只是输出未定义。它从浏览器操作页面中运行。

chrome.tabs.getCurrent( function(tab){
    console.log(tab);
} );

我查看了文档 ,据我所知,代码似乎与它所说的相符。

4

5 回答 5

116

该方法getSelected()自 Google Chrome 16 以来已被弃用(但官方文档中的许多文章尚未更新)。官方消息在这里。要获取在指定窗口中选择的选项卡,请chrome.tabs.query()与参数一起使用{'active': true}。所以现在它应该是这样的:

chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
  console.log(tabs[0]);
});
于 2013-01-07T00:34:29.810 回答
22

尝试:

chrome.tabs.getSelected(null, function(tab){
    console.log(tab);
});
于 2011-07-16T15:17:07.550 回答
5

由于chrome.tabs仅在后台或弹出脚本中可用,并且后台脚本在任何选项卡中均不活动,因此chrome.tabs.getCurrent()始终返回undefined.

相反,我们可以Tab从任何消息侦听器回调的第二个参数中检索活动对象。例如,

browser.runtime.onMessage.addListener((message, sender) => {
  console.log('Active Tab ID: ', sender.tab.id);
});
于 2020-10-23T10:17:05.040 回答
0

如果从非选项卡上下文(例如,背景页面或弹出视图)调用,则可能未定义。

看起来您不应该在中使用此代码,bg.js而应该在cs.js.

于 2019-08-01T21:38:53.743 回答
0

如果您遇到此问题,则可能是chrome.tabs.getCurrent()在错误的地方使用引起的。您在内容脚本中can't使用。chrome.tabs但是您可以在backgroundoptions脚本中使用它。

由于使用了 Promises,此示例需要 Manifest。此外,内容脚本不能使用 tabs.query。

于 2021-06-27T06:35:12.407 回答