2011-02-23 5 views
2

Je développe une petite extension (https://docs.google.com/leaf?id=0B5ZSnXcRXnSpMmM0NTFiNGEtMzEzZS00M2YzLWI4MzItMmVmNmM3OGE1MDRh&hl=en&authkey=CLzGpOMN) qui enregistre tous les onglets dans une fenêtre particulière, tout en fermant cette session. Dans ce cas, lorsque j'essaie de restaurer la session, la fonction de rappel n'est pas appelée, bien que la nouvelle fenêtre soit ouverte avec succès.extension Chrome: fonction de rappel pas appelé

La chose drôle est, en mode développeur, à l'aide des outils de développement, la fonction de rappel est appelée et restauré tous les onglets. S'il vous plaît aidez-moi.

est le code ici:

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); }); 
} 

Répondre

4

problème intéressant. Popup est automatiquement fermé lorsque vous créez une nouvelle fenêtre (et par conséquent l'exécution du code popup est terminée), c'est pourquoi il fonctionne en mode développeur uniquement parce qu'il force le popup à rester ouvert. Vous devez déplacer la fonction restoreTabs() vers une page d'arrière-plan, vous pouvez toujours l'appeler facilement à partir de votre popup:

linka.onclick = function() { 
    chrome.extension.getBackgroundPage().restoreTabs('saveTabs'+savetabName); 
};