2010-07-28 9 views
2

J'ai une barre latérale à l'intérieur de mon addon firefox. Je veux le comportement suivant pour cette barre latérale - je devrais forcer fermer la barre latérale si elle est ouverte lorsque le navigateur est fermé (de sorte que la prochaine fois que le navigateur est ouvert la barre latérale n'est pas dans un état ouvert). Je suis en train de le faire:Comment fermer une barre latérale dans firefox

uninit: function() { 
    var sidebarWindow = document.getElementById("sidebar").contentWindow; 
    if (sidebarWindow.location.href == "chrome://myaddon/content/mysidebar.xul") { 
     // Act on the sidebar content 
     toggleSidebar('mySampleSidebar'); 
    } 
} 

Je l'appelle UNINIT pour l'événement window.unload:

window.addEventListener ("unload", function() {myobj.uninit()}, false) ; Est-ce que quelqu'un peut me dire comment y parvenir, car ce que j'essaie de faire ne fonctionne pas.

Merci Kapil

Répondre

1

Dans votre barre latérale overlay firefox javascript ajouter

toggleSidebar(); 

dans la fonction écouteur d'événement "load".

Voir ici par exemple:

sidebar.onFirefoxLoad = function(event) { 
    document.getElementById("contentAreaContextMenu") 
      .addEventListener("popupshowing", function (e) 
      { sidebar.showFirefoxContextMenu(e); }, false); 

      toggleSidebar(); 
}; 

window.addEventListener("load", sidebar.onFirefoxLoad, false); 
+0

Pourquoi l'ajoutez-vous au chargement? Je suppose que ce que vous faites est juste de le fermer quand le navigateur s'ouvre plutôt que quand il se ferme? Notez que vous ne vérifiez pas la barre latérale, donc ce pourrait être la barre latérale de quelqu'un d'autre. – studgeek

+0

Après avoir réfléchi à cela un peu, je pense que l'idée de faire du load est aussi un bon ajout et un bon concept à avoir, donc je suis upvoting this. Cependant, je pense toujours que l'attraper au déchargement est le meilleur cas par défaut et je pense vraiment que vous devriez vérifier que c'est votre sidebar comme @Kapil. – studgeek

0

Votre code est correct pour fermer la barre latérale, mais je pense que unload est trop tard pour changer l'état de démarrage de la fenêtre du navigateur (browser.xul), parce que browser.xul a déjà été déchargé (et son état, y compris l'état de la barre latérale, a déjà été stocké).

Utilisez plutôt beforeunload. Je l'ai testé ce qui suit et il semble fonctionner très bien:
window.addEventListener("unload", myobj.uninit, false)

En de rares occasions le processus de navigateur pourrait être tué tant unload ne serait pas appelé (l'utilisateur tue ou il se bloque). Je ne suis pas sûr si parfois stocke l'état de la barre latérale comme il le fait des onglets, mais si c'est le cas, il pourrait ouvrir et avoir la barre latérale visible dans ce cas rare. Pour gérer ce cas, vous pouvez ajouter ce que @Vinothkumar a suggéré.

window.addEventListener("load", myobj.uninit, false)

Questions connexes