Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension chrome.tabs.query当前窗口打开;“不活跃”;背景页没有';t返回标签_Google Chrome Extension - Fatal编程技术网

Google chrome extension chrome.tabs.query当前窗口打开;“不活跃”;背景页没有';t返回标签

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过滤器会返回选项卡,但不会返回所有窗口的

我有一个chrome扩展,其后台页面在
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
,则应提供一个窗口对象数组,每个对象包含一个属性及其后续选项卡。我会测试一下,看看你是否仍然得到不完整的结果。