我正在编写一个 Chrome 扩展程序来保存/恢复您的浏览器窗口状态 - 所以,我保存给定窗口的状态:
var properties = [ "top",
"left",
"width",
"height",
"incognito",
"focused",
"type"
];
var json = {};
var cache = chrome_window_object;
// copy only the keys we care about:
_.each(properties,function(key,value) {
json[key] = cache[key];
});
// then copy the URLs of the tabs, if they exist:
if(cache.tabs) {
json.url = [];
_.each(cache.tabs,function(tab) {
json.url.push(tab.url);
});
}
return json;
在将来的某个时候,我会删除所有窗口:
closeAllWindows: function(done_callback) {
function got_all(windows) {
var index = 0;
// use a closure to only close one window at a time:
function close_next() {
if(windows.length <= index) return;
var window = windows[index++];
chrome.windows.remove(window,close_next);
}
// start closing windows:
close_next();
}
chrome.windows.getAll(got_all);
}
然后我使用以下方法恢复窗口:
chrome.windows.create(json_from_before);
创建的窗口中有一个额外的选项卡,无论我刚刚关闭的窗口中的内容是什么......我完全不知所措,我认为问题是我在未发布的代码中所做的事情(这是一个很大的扩展)。我花了几个小时逐行检查代码并确保我没有明确要求创建此选项卡。那么 - 以前有人见过这样的事情吗?