f4l*_*lco 5 javascript google-chrome chromium google-chrome-extension
我想为谷歌浏览器/铬编写一个扩展(一个会话管理器,它比画廊中已有的具有更多的功能和吸引人的眼球)。
但我无法让以下代码工作:
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;
}
Run Code Online (Sandbox Code Playgroud)
这是使用 google api 的一个相当简单的示例,但我得到的不是选项卡列表,而是“未定义”值作为回报。此外,窗口列表似乎是空的。
我目前在 Ubuntu 10.10 下运行 Chromium 7.0.517.44 (64615)。我也尝试过 google 的官方 chrome 版本,结果相同。
API 文档可以在这里找到:http : //code.google.com/chrome/extensions/windows.html
菲尼亚斯
假设你tabs在 manifest 中声明了权限,这段代码有几个问题:
list_session()函数将返回空列表,因为您在回调函数中修改了列表,该回调函数可以在console.log(list);和15 分钟后由 chrome 调用return。您需要更改程序结构以使用回调。
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
});
Run Code Online (Sandbox Code Playgroud)