javascript - Chrome 扩展程序 : callback function not getting called

标签 javascript google-chrome-extension dom-events

我正在开发一个小扩展(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/

相关文章:

javascript - 使用 modernizr 检测 iOS 设备

javascript - id 中的 jQuery 转义期

javascript - ChartJS中线段的不同颜色

javascript - 将小书签变成 Chrome 扩展程序

javascript - 如何发送下拉项的值到导出插件?

javascript - Chrome 扩展程序获取元关键字

javascript - 无法左键单击转到 anchor 标记链接

React-Redux 应用程序未触发 Javascript Video loadmetadata 事件

javascript - 当浏览器中触发事件时,什么时候确定事件处理程序?

javascript - Safari 2.0 中修饰键的键盘事件