1

如何使用打字稿创建 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")
4

2 回答 2

5

您可以声明 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 对象的引用。Usingdocument.getElementById(...)将返回 DOM 中的元素(我假设是一个object元素。)您需要使用helper变量来访问 ActiveXObject。

于 2013-10-24T10:44:44.133 回答
1

除了Fenton 的回答之外,请注意,DefiniteTyped 上还有一些可用的 ActiveX 类型定义(WordExcelLibreOfficeWIA等)。您可以像安装其他任何定义一样安装这些定义,例如:

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

如果这些定义没有帮助,我编写了一个项目,它从 ActiveX 类型库(在系统上注册或从文件)生成 Typescript 定义文件。

于 2018-02-06T00:16:56.580 回答