2012-11-22 51 views
1

我在學習如何製作Firefox擴展。我想創建一個只顯示在特定頁面上的工具欄。我可以讓工具欄出現,但是當我打開或切換到新標籤頁時,或者關閉具有特定頁面的標籤頁時,它應該隱藏起來。我不明白如何讓visiblechange事件工作,不管我什麼都不會發生。如何在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; 
    } 
    } 
} 

回答

1

mozVisibilityState可以是visiblehidden

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; 
     } 
    } 
} 
+0

我覺得'TabSelect'不會捕獲用戶輸入目標地址,或者跟隨它的鏈接。 'pageshow'看起來更有希望。 – paa