2011-11-06 2 views
0

J'ai une extension de travail, et maintenant j'essaie d'ajouter quelques options/fonctionnalités!Chrome Extension Dev: Mise à jour des variables javascript dans background.html

J'ai une page d'arrière-plan qui garde la trace de "l'état" de chaque onglet (par les variables javascript par onglet qui contiennent des options/paramètres). Maintenant, je veux avoir un fichier popup.html qui aura 1 option, un curseur temporel. Je ne suis pas concerné par le curseur ou tout html/css. Mon problème est que je ne suis pas sûr de la façon de communiquer le nouveau paramètre à la page d'arrière-plan.

Ma page d'arrière-plan contient un code comme ceci:

chrome.browserAction.onClicked.addListener(function(tab) {  
    Init(tab); 
}); 

... 

function Init(tab) 
{ 
    chrome.tabs.sendRequest(tab.id, 
    { 
     'TurnOffTimer': false, 
     'TimerIsOn': TimerIsOn, 
     'Interval': Interval, 
     'RefreshRate': RefreshRate 
    }, responseCallback); 
} 

TimerIsOn, Intervalle et RefreshRate sont des variables javascript sur la même page. Ce que je dois savoir, c'est comment, une fois que le curseur (qui est déclaré dans le popup.html) est défini et que l'utilisateur clique sur 'OK', la valeur du timer peut être envoyée à background.html pour être stockée dans le variable javascript appropriée et la fonctionnalité d'extension peut être mise à jour. Je peux créer une autre fonction appelée Update qui prendra cette valeur mise à jour et fonctionnera, mais j'ai besoin de savoir comment appeler la fonction Update de popup.html si elle est déclarée dans background.html.

J'espère que j'ai du sens, mais si une clarification est nécessaire, n'hésitez pas à demander.

Répondre

1

Vous pouvez accéder directement à l'objet window de la page d'arrière-plan à partir de la fenêtre contextuelle avec chrome.extension.getBackgroundPage(). Donc, pour changer un peu var en page bg de pop-up, vous pouvez simplement appeler:

chrome.extension.getBackgroundPage().Interval = 5; 

Vous devrez changer votre poste un peu, car une fois que vous avez pop-up attaché à bouton d'action du navigateur, auditeur chrome.browserAction.onClicked ne sera pas mise à feu plus. Vous auriez besoin d'appeler Init de pop-up manuellement de manière similaire:

chrome.extension.getBackgroundPage().Init(); 

Et à l'intérieur Init() obtenir manuellement sélectionné id onglet, car il ne sera pas passé plus.

+0

Génial! Merci pour la réponse rapide. Je vais tenter le coup une fois que je serai au travail et que je mettrai à jour mes résultats! – JesseBuesking

+0

Après quelques retouches (en fonction de votre réponse), j'ai maintenant 1 option! Impressionnant! Merci encore serg! – JesseBuesking

Questions connexes