2013-10-24 164 views
0

如何使用打字稿創建ActiveX?因爲有用於創建對象使用Activex的打字稿

var objElement = document.createElement('object'); 
     objElement.classid = 'clsid:2F3BC10B-45B6-472D-859C-200197E7D9C7'; 
     objElement.id = objectId; 
     objElement.data = 'data:application/x - oleobject; base64, C8E7L7ZFLUeFnCABl + fZxwAIAABqJQAAxRoAAA =='; 
     this.config.element.appendChild(objElement); 

     var helper = CreateObject("Helper.WebHelper") 

回答

4

可以申報的ActiveXObject(如果不存在的話)的支持,這樣的:

declare var ActiveXObject: (type: string) => void; 

我提到這一點,只是因爲這是得到你的標準的方法如果它不存在於標準庫中,則將其轉換爲類型系統。

然而,ActiveXObject已經在標準打字稿庫,所以你並不需要 - 它將會高高興興地編譯:

var objElement = document.createElement('object'); 
objElement.classid = 'clsid:2F3BC10B-45B6-472D-859C-200197E7D9C7'; 
objElement.id = 'My Id'; 
objElement.data = 'data:application/x - oleobject; base64, C8E7L7ZFLUeFnCABl + fZxwAIAABqJQAAxRoAAA =='; 
this.config.element.appendChild(objElement); 

var helper = new ActiveXObject("Helper.WebHelper"); 

至於你object does not support this property or method - 一旦你有一個ActiveX對象的句柄,你被銬在任何物體支持的東西上。

使用上面的代碼,helper保存您對ActiveX對象的引用。使用document.getElementById(...)將返回DOM中的元素(我假設有一個object元素。)您需要使用您的helper變量來訪問ActiveXObject。

+0

越來越未定義,我已經嘗試ActiveXObject但獲取對象不支持此操作,我該如何創建ActiveX對象? –

+0

MSDN文檔建議語法是'new ActiveXObject(servername.typename [,location])''所以爲了讓TypeScript識別這個你需要爲這個簽名寫一個聲明 - 記住這只是IE,它會從不在其他瀏覽器中工作。 http://msdn.microsoft.com/en-us/library/ie/7sw4ddf8%28v=vs.94%29.aspx – Fenton

+0

謝謝我忘記了新的ActiveObject之前。也是如何,當我打電話var助手var helper = document.getElementById('PlayerComponentX1'); helper.init我得到異常,並從主動對象時,我得到異常呢? –

0

除了Fenton's answer,注意,有一些關於DefinitelyTyped(WordExcelLibreOfficeWIA等)提供的ActiveX類型定義。您可以安裝這些定義,像任何其他人,如:

npm install --save-dev @types/activex-excel 

如果這些定義沒有幫助,我寫了一個project從的ActiveX類型庫生成打字稿定義文件(無論是在系統中註冊,或一份文件)。