Google chrome extension chrome.tabs.query当前窗口打开;“不活跃”;背景页没有';t返回标签
我有一个chrome扩展,其后台页面在Google chrome extension chrome.tabs.query当前窗口打开;“不活跃”;背景页没有';t返回标签,google-chrome-extension,Google Chrome Extension,我有一个chrome扩展,其后台页面在manifest.json中配置为persistent:false 后台页面实现以下Chrome API方法: chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { // tabs is empty }); 如果调用上述代码时后台页面变为非活动状态,则query方法在回调中不返回任何选项卡,删除currentWindow过滤器会返回选项卡,但不会返回所有窗口的
manifest.json
中配置为persistent:false
后台页面实现以下Chrome API方法:
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
// tabs is empty
});
如果调用上述代码时后台页面变为非活动状态,则query
方法在回调中不返回任何选项卡,删除currentWindow
过滤器会返回选项卡,但不会返回所有窗口的选项卡。使用lastFocusedWindow
也不起作用
是否有办法使非活动后台页面成功查询当前窗口的活动选项卡。这是内存卸载的副作用。考虑使用,这将确保事件页面在调用回调之前被完全加载。 来自developer.chrome.com:
chrome.runtime.getBackgroundPage(函数回调)
检索当前扩展/应用程序内运行的后台页面的JavaScript“窗口”对象。如果后台页面是事件页面,系统将确保在调用回调之前加载它。如果没有背景页面,则会设置错误
听起来像是一个bug,或者你的代码中可能有其他东西弄乱了结果。我尝试将我的
chrome.tabs.query
包装在chrome.runtime.getBackgroundPage
回调调用中,但仍然没有返回任何选项卡。可能是chrome.runtime.getBackgroundPage
必须在调用后台页面上的函数之前调用,而不是在其内部调用?@jonathanwiesel,不,这不是必需的。这个答案是不相关的,因为您的代码运行时,只有结果是不正确的。正如我所说,您描述的行为听起来像一个bug。@jonathanwiesel@wOxxOm可能是正确的,但我会在将其记为bug之前尝试调试。这听起来像是Chrome实现的较新的自动放弃功能的副作用。如果使用chrome.windows.getAll
并将populate
设置为true
,则应提供一个窗口对象数组,每个对象包含一个属性及其后续选项卡。我会测试一下,看看你是否仍然得到不完整的结果。