0

让我们直接解决问题:

我实际上正在做一个 firefox 扩展,我想在其中实现 jWebsocket API 以构建一个小型聊天。我将名为test.js的主脚本文件和 jWebsocket 库放入 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天:/

4

1 回答 1

0

是的,与 HTML 开发相同,每个 XUL 文件之间都有可用的命名空间。在此处查看Firefox 扩展中的命名空间。

你得到什么错误?

编辑:

您是否在调用 browserSupportsWebSockets() 之前初始化了 jws 对象?

就像 Pointy 说的,你需要在你的 jwebsocket.js 文件之后加载 test.js 。

于 2010-05-15T16:30:28.740 回答