如何使用chrome.tabs.getCurrent获取Chrome扩展程序中的页面对象?

时间:2011-07-16 15:13:10

标签: javascript html google-chrome-extension google-chrome-devtools

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

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

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

5 个答案:

答案 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。 但您可以在 backgroundoptions 脚本中使用它。

<块引用>

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