2010-05-15 152 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