我正在开发一个小扩展(https://docs.google.com/leaf?id=0B5ZSnXcRXnSpMmM0NTFiNGEtMzEzZS00M2YzLWI4MzItMmVmNmM3OGE1MDRh&hl=en&authkey=CLzGpOMN),它可以在关闭该 session 时保存特定窗口中的所有选项卡。 在这种情况下,当我尝试恢复 session 时,尽管新窗口已成功打开,但我没有调用回调函数。
有趣的是,在开发人员模式下,使用开发人员工具时,回调函数会被调用并恢复所有选项卡。 请帮助我。
这是代码:
function restoreTabs( saveTabName )
{
var tabVals = window.localStorage.getItem(saveTabName);
if (tabVals == null)
return;
var callbackFunc = function (window, tabValList) {
//alert('created window');
for (var i = 0; i < tabValList.length; i++) {
var tab = eval('(' + tabValList[i] + ')');
var newTabObj = {
windowId: window.id,
index: tab.index,
url: tab.url,
selected: tab.selected,
pinned: tab.pinned
};
chrome.tabs.create(newTabObj);
}
};
var tabValList = tabVals.split('|');
chrome.windows.create(null, function (win) { callbackFunc(win, tabValList); });
}
最佳答案
有趣的问题。当您创建新窗口时,弹出窗口会自动关闭(因此弹出窗口代码执行被终止),这就是它在开发人员模式下工作的原因,因为它强制弹出窗口保持打开状态。您需要将 restoreTabs()
函数移至后台页面,您仍然可以从弹出窗口轻松调用它:
linka.onclick = function () {
chrome.extension.getBackgroundPage().restoreTabs('saveTabs'+savetabName);
};
关于javascript - Chrome 扩展程序 : callback function not getting called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5087046/