1

Firefoxの拡張機能を作成する方法を学ぼうとしています。特定のページにのみ表示されるツールバーを作成したいと思います。ツールバーを表示させることはできますが、新しいタブを開いたり切り替えたり、その特定のページでタブを閉じたりすると、ツールバーが非表示になるはずです。visibilitychange何をしようとしても何も起こらないのですが、 どうやってイベントを動かすのかわかりません。

window.addEventListener("load", function load(event){
  window.removeEventListener("load", load, false);
  myExtension.init();  
},false);


var myExtension = {

  init: function (aEvent) {
    gBrowser.addEventListener("DOMContentLoaded", this.showToolbar, false);
  },

  showToolbar: function(aEvent) {
    var doc = aEvent.originalTarget;

    if(doc.location.href=="http://www.google.ca/"){
      eToolbar=document.getElementById("nav-toolbar");
      eToolbar.hidden=false;

      //no matter how I change this line below it never does anything
      gBrowser.addEventListener("mozvisibilitychange", this.toggleToolbar, false);
    }
  },

  toggleToolbar: function(aEvent) {
    eToolbar=document.getElementById("nav-toolbar");
    if(document["mozVisibilityState"]=="mozHidden"){
        eToolbar.hidden=true;
    } else {
        eToolbar.hidden=false;
    }
  } 
}
4

2 に答える 2

1

mozVisibilityStateまたはのいずれvisiblehiddenです。

于 2012-11-22T18:48:32.433 に答える
0

代わりに TabSelect イベントを使用して、目的の効果を得ることができました。

window.addEventListener("load", function load(event){
   window.removeEventListener("load", load, false);
   myExtension.init();  
},false);


var myExtension = {

   init: function (aEvent) {
      gBrowser.addEventListener("DOMContentLoaded", this.showToolbar, false);
   },

   showToolbar: function(aEvent) {
      var doc = aEvent.originalTarget;

      if(doc.location.href=="http://www.google.ca/"){
         eToolbar=document.getElementById("nav-toolbar");
         eToolbar.hidden=false;

         var container = gBrowser.tabContainer;
         container.addEventListener("TabSelect", myExtension.toggleToolbar, false);
      }
   },

   toggleToolbar: function(aEvent) {
      eToolbar=document.getElementById("nav-toolbar");
      if(window._content.document.location.href=="http://www.google.ca/"){
         eToolbar.hidden=false;
      } else {
         eToolbar.hidden=true;
      }
   } 
}
于 2012-11-23T02:07:37.767 に答える