2010-05-15 90 views
0

让我们直接找到问题:加载的Jscript文件到Firefox扩展

我实际上做一个Firefox扩展中,我想实现的jWebsocket API,以建立一个小聊天。 我得到了我的主脚本文件,名为test.js,和jWebsocket lib放入一个js文件夹。 只是你知道,这是我有史以来第一次的Firefox扩展。

所以在我的XUL文件,我得到这个(仅当然,界面代码不中的脚本部分):

<overlay id="test-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
    <script type="application/x-javascript" src="chrome://test/content/test.js" /> 
    <script type="application/x-javascript" src="chrome://test/content/js/jwebsocket.js" /> 

jwebsocket.js是该文件,我需要根据调用jWebsocket网站。

在我的主要脚本文件test.js我开始:

if (jws.browserSupportsWebSockets()) 
{ 
    jWebSocketClient = new jws.jWebSocketJSONClient(); 
} 
else 
{ 
    var lMsg = jws.MSG_WS_NOT_SUPPORTED; 
    alert(lMsg); 
} 

JWS被创建成jwebsocket.js文件的命名空间。

当然,我有必要的独立服务器在后台运行,并正在工作。

所以从我理解的各种网站上看,是如果一个js文件被加载到JavaScript分配的内存空间(带标签),所有名称空间/函数应该可用每个文件之间。但这主要是面向HTML的问题,所以我不确定它是否适用于XUL/Firefox环境。

但是脚本在第一次jws调用时保持失败。

关于这里出了什么问题的任何想法?我现在被困2天了:/

+0

我对扩展程序了解不多,但是不应该在使用它的代码之前将库脚本文件放在*之前? – Pointy 2010-05-15 16:27:15

+0

另外,我很怀疑jwebsockets的东西在XUL环境下工作。 – Pointy 2010-05-15 16:29:15

+0

已经尝试切换顺序,没有更改:/ – colon3l 2010-05-15 16:33:05

回答

0

是的,和HTML开发一样,你的命名空间在每个XUL文件之间都可用。 看看here在firefox扩展中的命名空间。

你会得到什么错误?

编辑:

你有你的初始化对象JWS之前调用browserSupportsWebSockets()?

Like Pointy说,你需要在你的jwebsocket.js文件后加载test.js

+0

谢谢你的链接,jwebsocket命名空间似乎是格式良好的。 我没有得到任何错误,我在发布的代码块前后放置了一个* alert *,第一个工作,而不是第二个,代码只是创建一个* jWebSocketJSONClient *。 – colon3l 2010-05-15 16:42:40

+0

在分配之前将警报放在if和else之内,这样你可以得到代码执行的内容 – 2010-05-15 16:47:30

+0

嗯......不,我没有。我怎样才能做到这一点 ? Sry我不是真的进入JavaScript。(但jwebsocket现在加载之前,但正如我所说没有变化) 编辑:没有警报之间如果或其他,因此它必须失败时调用* jws.browserSupportsWebSockets()* – colon3l 2010-05-15 16:47:50