Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firefox无法识别已定义的对象(Firefox扩展开发)_Javascript_Firefox_Firefox Addon - Fatal编程技术网

Javascript Firefox无法识别已定义的对象(Firefox扩展开发)

Javascript Firefox无法识别已定义的对象(Firefox扩展开发),javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,我正在开发一个Firefox扩展(我是这方面的新手,所以请放轻松),我似乎遇到了一个非常恼人的问题,阻碍了我取得任何进展 我有三个.js文件:main.js,hello.js,awesome.js和一个.xul文件,awesomeOverlay.xul。main.js是这样的: //main.js if(typeof(MyExtension)=“未定义”){ var MyExtension={}; } MyExtension.Main={ 浏览器:空, init:function(){ 如果(“

我正在开发一个Firefox扩展(我是这方面的新手,所以请放轻松),我似乎遇到了一个非常恼人的问题,阻碍了我取得任何进展

我有三个.js文件:
main.js
hello.js
awesome.js
和一个.xul文件,
awesomeOverlay.xul
main.js
是这样的:

//main.js
if(typeof(MyExtension)=“未定义”){
var MyExtension={};
}
MyExtension.Main={
浏览器:空,
init:function(){
如果(“窗口中的gBrowser”){
MyExtension.Main.browser=window.gBrowser;
MyExtension.Main.browser.addEventListener(“DOMContentLoaded”,MyExtension.Main.onPageLoad,true);
window.content.console.log(“耶,识别出浏览器了!”);
},
onPageLoad:函数(e){
var doc=e.originalTarget;
var regex=/stackoverflow\.com/;
if(regex.test(doc.location.href)){
window.content.console.log(“访问stackoverflow!”);
警报(“已加载堆栈溢出!”);
}
e、 originalTarget.defaultView.addEventListener(“unload”,函数(e){MyExtension.Main.onPageUnload(e),true);
},
onPageUnload:函数(e){
var regex=/stackoverflow\.com/;
var doc=e.originalTarget;
if(regex.test(doc.location.href)){
警惕(“找到了你问题的解决方案,嗯?太好了!”);
}
}
};
在我的另外两个.js文件中,我有像
MyExtension.Hello={…}
MyExtension.awome={…}
这样的对象。问题是,当我加载stackoverflow.com时,我在控制台中没有收到任何警报或日志。我加载了Scratchpad,将环境上下文更改为“Browser”,并验证我定义的对象是否存在于
alert(typeof(MyExtension))
,它会按预期返回“object”。当我尝试
alert(typeof(MyExtension.Main))
时,我得到了“undefined”。事实上,我得到了
alert(typeof(MyExtension.Main.*)
的“undefined”

当我尝试检查其他两个文件(hello.js和awesome.js)中对象的类型时,它们被正确识别(即“function”、“object”等)。似乎出于某种原因忽略了main.js文件。这就是我的.xul文件的定义:



我已经验证了chrome.manifest中的路径是否正确。这让我抓狂,请帮助!

因为
MyExtension.Main
是在
Main.js
中定义的,您可能想试试

exports.MyExtension = MyExtension;
main.js
中,在
MyExtension.main
之后的某个地方分配

main = require("main");
在调用
typeof(MyExtension.Main)
的文件中(因为属性
Main
是在
Main.js
中定义的),并作为
typeof(Main.MyExtensions.Main)


这是假设您的所有.js文件都在
lib
文件夹中。我不确定如何(如果)XUL影响了这一点。我从来没有弄乱过XUL;在这项技术上,我比你更像是一个新手。

你在导出你的对象吗?@user1269964:不,我不知道怎么做。正如我所说,我是FF扩展开发的初学者。我应该导出它们吗?然而,在尝试一些东西时,我声明了
MyExtensi在
标记内的
对象内联上,在.xul文件中,它可以工作。奇怪。