2010-01-18 43 views
0

我有一個ActiveX組件(其沒寫和沒有控制權)。它有幾個我想用的方法,返回數組。每次我試圖做類似的東西:返回數組從ActiveX組件爲JavaScript

var arrayValue = axObj.methodWhichReturnsArray(); 

的arrayValue對象是不確定的。組件提供者告訴我,我不應該遇到我描述的任何問題。我確實執行了它通過的空檢查(意味着axObj不爲空)。

組件供應商,然而,使用JScript中,沒有JavaScript的,在他的榜樣,肚裏像

var arrayVar = axComponent.getListAsArray(); 
var theArray = (new VBArray(arrayVar)).toArray(); 
alert(theArray[0]); 
alert(theArray[1]); 
alert(theArray[2]); 

但同樣,我使用的JavaScript(也從來沒用過的JScript),所以我不知道的區別是什麼?

(而且我是風化的Java老手,所以這一切是令人沮喪的。)

謝謝!

+1

什麼瀏覽器(S)你想這個嗎? – JonoW 2010-01-18 17:31:08

+1

如果你在IE中,你*是使用JScript而不是JavaScript(這是Mozilla的實現)。 VBArray構造函數應該可用。 – bobince 2010-01-18 18:14:10

+0

p。確保「JScript」只是微軟用於解釋器的名稱,它運行其他人稱之爲「Javascript」的解釋器 – Pointy 2010-01-18 18:14:27

回答

2

JScript是的Javascript微軟版本的「迴天」,並依然強勁。

第一個問題必須要在那裏你想使用它?在瀏覽器中?內聯網?只有IE?服務器端?

JScript是不是比IE或IIS服務器或MS的臺式機,所以我希望你在上面的一個上運行它的任何其他可用。

的JScript中有用於轉換的VBScript數組爲JScript陣列(因爲它們被存儲方式不同)的特殊功能,該功能在代碼中的VBArray功能。

你也許能夠解決這個問題通過使用JScript中枚舉http://msdn.microsoft.com/en-us/library/6ch9zb09(VS.85).aspx

喜歡的東西(雖然未經測試):

var fso = new ActiveXObject("Scripting.FileSystemObject"); 
var e = new Enumerator(fso.Drives); 
var myArray = []; 
do { 
myArray.push(e.item()); 
e.moveNext(); 
} while (!e.atEnd()); 

document.write(myArray.join("<li>");