代码用于将用户正在查看的页面的当前选项卡对象输出到控制台,但它只输出undefined。它是在浏览器操作页面中运行的。
chrome.tabs.getCurrent( function(tab){
console.log(tab);
} );
我查看了documentation,据我所知,代码似乎与它所说的相符。
答案 0 :(得分:86)
自Google Chrome 16以来,方法getSelected()
已被弃用(官方文档中的许多文章尚未更新)。 Official message is here。要获取在指定窗口中选择的选项卡,请使用带有参数chrome.tabs.query()
的{{1}}。所以现在看起来应该是这样的:
{'active': true}
答案 1 :(得分:19)
尝试:
chrome.tabs.getSelected(null, function(tab){
console.log(tab);
});
答案 2 :(得分:0)
如果从非制表符上下文(例如,背景页面或弹出视图)调用,则可能是未定义的。
您似乎应该在bg.js
中而不是cs.js
中使用此代码。
答案 3 :(得分:0)
由于chrome.tabs
仅在后台脚本或弹出脚本中可用,并且后台脚本在任何选项卡中均未激活,因此chrome.tabs.getCurrent()
始终返回undefined
。
相反,我们可以从任何消息侦听器回调的第二个参数中检索活动的Tab
对象。例如,
browser.runtime.onMessage.addListener((message, sender) => {
console.log('Active Tab ID: ', sender.tab.id);
});
答案 4 :(得分:0)
如果您遇到这个问题,问题可能是由于在错误的地方使用了 chrome.tabs.getCurrent()
。
您 can't
在内容脚本中使用 chrome.tabs
。
但您可以在 background
或 options
脚本中使用它。
由于使用了 Promises,这个例子需要 Manifest。此外,内容脚本不能使用 tabs.query。