2013-03-25 97 views
0

我正在開發一個Firefox擴展(我是一個新手,所以請放輕鬆),而且我似乎陷入了一個令人討厭的問題,它阻礙了我沒有取得任何進展。Firefox不識別定義的對象(Firefox擴展開發)

我有三個.js文件:main.jshello.jsawesome.js和一個.xul文件,awesomeOverlay.xul。該main.js是這樣的:

//main.js 

if(typeof(MyExtension) === "undefined") { 
    var MyExtension = {}; 
} 

MyExtension.Main = { 
    browser : null, 

    init : function() { 
     if("gBrowser" in window) { 
      MyExtension.Main.browser = window.gBrowser; 
      MyExtension.Main.browser.addEventListener("DOMContentLoaded", MyExtension.Main.onPageLoad, true); 
      window.content.console.log("Yay, recognized the browser!"); 
    }, 

    onPageLoad : function(e) { 
     var doc = e.originalTarget; 
     var regex = /stackoverflow\.com/; 
     if(regex.test(doc.location.href)) { 
      window.content.console.log("Visiting stackoverflow!"); 
      alert("Loaded stackoverflow!"); 
     } 

     e.originalTarget.defaultView.addEventListener("unload", function(e){MyExtension.Main.onPageUnload(e), true); 
    }, 

    onPageUnload : function(e) { 
     var regex = /stackoverflow\.com/; 
     var doc = e.originalTarget; 
     if(regex.test(doc.location.href)) { 
      alert("Found a solution to your problem, huh? Great!"); 
     } 
    } 
}; 

在我的另外兩個.js文件,我有一個MyExtension.Hello = {...}MyExtension.Awesome = {...}對象。問題是,當我加載stackoverflow.com時,我沒有在控制檯中得到任何警報或日誌。我加載了Scratchpad,將Environment上下文更改爲「Browser」,並驗證我定義的對象是否存在alert(typeof(MyExtension)),並且它按預期返回「object」。當我嘗試alert(typeof(MyExtension.Main))時,我得到了「未定義」。實際上,我得到「undefined」爲alert(typeof(MyExtension.Main.*))

當我嘗試檢查其他兩個文件(hello.js和awesome.js)中的對象類型時,它們被正確識別(即「函數」,「對象」等)。由於某種原因,main.js文件似乎被忽略。這是我的.xul文件的定義:

<?xml version="1.0"?> 
<?xml-stylesheet href="chrome://myextension/skin/myextension.css" type="text/css"?> 
<overlay id="AwesomeOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
    <script type="application/x-javascript" src="chrome://myextension/content/jquery.min.js" /> 
    <script type="application/x-javascript" src="chrome://myextension/content/main.js" /> 
    <script type="application/x-javascript" src="chrome://myextension/content/hello.js" /> 
    <script type="application/x-javascript" src="chrome://myextension/content/awesome.js" /> 
    <statusbar id="status-bar"> 
     <statusbarpanel id="myextensionAwesomeStatusBar" context="myextensionSB" class="shown" persist="class"> 
      <hbox id="myextensionHbox" class="shown" persist="class"> 
       <image id="awesomeIcon" tooltiptext="Awesome Extension \m/" class="shown" persist="class" /> 
      </hbox> 
     </statusbarpanel> 
    </statusbar> 
</overlay> 

我已驗證chrome.manifest中的路徑是否正確。這讓我瘋狂,請幫忙!

+0

你正在輸出你的物品嗎? – Lori 2013-03-26 12:06:32

+0

@ user1269964:不,我不知道該怎麼做。正如我所說,我是FF擴展開發的初學者。我應該出口它們嗎?但是,在嘗試幾件事情時,我在.xul文件中的'