0
我正在開發一個Firefox擴展(我是一個新手,所以請放輕鬆),而且我似乎陷入了一個令人討厭的問題,它阻礙了我沒有取得任何進展。Firefox不識別定義的對象(Firefox擴展開發)
我有三個.js文件:main.js
,hello.js
,awesome.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中的路徑是否正確。這讓我瘋狂,請幫忙!
你正在輸出你的物品嗎? – Lori 2013-03-26 12:06:32
@ user1269964:不,我不知道該怎麼做。正如我所說,我是FF擴展開發的初學者。我應該出口它們嗎?但是,在嘗試幾件事情時,我在.xul文件中的'