如何使用打字稿创建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")
答案 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(Word,Excel,LibreOffice,WIA和其他人可以使用一些ActiveX类型定义。您可以像其他任何一样安装这些定义,例如:
npm install --save-dev @types/activex-excel
如果这些定义没有帮助,我已经编写了project来生成ActiveX类型库中的Typescript定义文件(在系统中注册,或者从文件中注册)。