gpt4 book ai didi

javascript - chrome.windows.getAll() 未定义?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:51:24 28 4
gpt4 key购买 nike

我想为 google chrome/chromium 编写一个扩展(一个 session 管理器,它比画廊中已有的具有更多的功能和视觉效果)。

但是我无法让下面的代码工作:

function list_session() {
var list = [];
chrome.windows.getAll(
{"populate" : true},

function (window_list) {
for(window in window_list) {
list.concat(window.tabs);
}
}
);
console.log(list);
return list;
}

这是一个使用 google api 的相当简单的示例,但我得到的不是选项卡列表,而是“未定义”值作为返回。此外,窗口列表似乎是空的。

我目前在 Ubuntu 10.10 下运行 Chromium 7.0.517.44 (64615)。我也尝试了 google 的官方 chrome 版本,结果相同。

API 文档可以在这里找到: http://code.google.com/chrome/extensions/windows.html

飞哥

最佳答案

假设您在 list 中声明了 tabs 权限,此代码存在几个问题:

  • list_session() 函数将返回空列表,因为您在回调函数中修改了列表,chrome 可能会在 console.log(list) 后 15 分钟调用该函数;返回。您需要更改程序结构以改用回调。

  • concat方法不修改原数组

  • 不建议使用
  • in 运算符循环遍历数组,因为它返回的可能不是您所期望的。

所以我会这样写:

function list_session(callback) {

chrome.windows.getAll({populate : true}, function (window_list) {
var list = [];
for(var i=0;i<window_list.length;i++) {
list = list.concat(window_list[i].tabs);
}
console.log(list);
if(callback) {
callback(list);
}
});
}

//usage
list_session(function(tab_list) {
//use array of tabs
});

关于javascript - chrome.windows.getAll() 未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4157271/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com