带有Activex的打字稿

时间:2013-10-24 10:13:47

标签: typescript activex

如何使用打字稿创建ActiveX?因为不支持CreateObject

 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")

2 个答案:

答案 0 :(得分:4)

您可以声明ActiveXObject(如果它不存在),如下所示:

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

我之所以提到这一点,只是因为如果它不存在于标准库中,这是将内容输入类型系统的标准方法。

但是,ActiveXObject已经在标准的TypeScript库中了,所以你不需要它 - 它会愉快地编译:

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。

答案 1 :(得分:1)

除了Fenton's answer之外,请注意,DefinitelyTyped(WordExcelLibreOfficeWIA和其他人可以使用一些ActiveX类型定义。您可以像其他任何一样安装这些定义,例如:

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

如果这些定义没有帮助,我已经编写了project来生成ActiveX类型库中的Typescript定义文件(在系统中注册,或者从文件中注册)。