2012-01-24 1 views
6

J'ai une extension Chrome qui fait un window.open() lorsque l'icône des extensions est cliquée. (Il ne peut pas utiliser la popup d'extension Chrome traditionnelle en raison d'un bogue non apparenté dans Chrome). Je me demande s'il existe un moyen de focaliser une fenêtre popup si elle est déjà ouverte. Chrome désactive window.focus() mais je pensais qu'il pourrait y avoir un moyen de le faire dans une extension Chrome.Pouvez-vous mettre au point une fenêtre contextuelle à partir d'une extension Chrome?

Mise à jour: Pour toute personne intéressée c'est le code que je fini par utiliser dans ma page de fond:

var popupId; 

// When the icon is clicked in Chrome 
chrome.browserAction.onClicked.addListener(function(tab) { 

    // If popupId is undefined then there isn't a popup currently open. 
    if (typeof popupId === "undefined") { 

    // Open the popup 
    chrome.windows.create({ 
     "url": "index.html", 
     "type": "popup", 
     "focused": true, 
     "width": 350, 
     "height": 520 
    }, function (popup) { 
     popupId = popup.id; 
    }); 

    } 
    // There's currently a popup open 
    else { 
    // Bring it to the front so the user can see it 
    chrome.windows.update(popupId, { "focused": true }); 
    } 

}); 

// When a window is closed 
chrome.windows.onRemoved.addListener(function(windowId) { 
    // If the window getting closed is the popup we created 
    if (windowId === popupId) { 
    // Set popupId to undefined so we know the popups not open 
    popupId = undefined; 
    } 
}); 

Répondre

8

Au lieu d'utiliser window.open() utiliser le Chromes chrome.windows.create .. http://code.google.com/chrome/extensions/windows.html#method-create
... alors vous pouvez enregistrer son window.id dans le rappel, puis à chaque fois que vous voulez le mettre au point, vous pouvez utiliser chrome.windows.update.

+0

Bravo, c'était exactement ce dont j'avais besoin. –

Questions connexes