嵌入为HTML对象的SVG文档是否有有效的打字稿类型?

时间:2016-10-13 11:23:16

标签: svg typescript

我在HTML中嵌入一个SVG对象,如下所示:

<object id='mapObject' type="image/svg+xml" data="assets/maps/drawing.svg">
</object>

然后,我想从我的打字稿类(来自Ionic 2,但这应该是无关紧要的)达到它:

let map = document.getElementById("mapObject");
let svgDoc = map.contentDocument;  // Get the inner SVG DOM

这适用于浏览器,但是打字稿抱怨它:

  

typescript属性'contentDocument'在类型'HTMLElement'

上不存在

更糟糕的是,它在设备中不起作用,因为编译器拒绝为它生成代码。

我的临时黑客/解决方案如下:

let svgDoc = (<HTMLIFrameElement>map).contentDocument;  // Get the inner SVG DOM

这适用于设备,因为HTMLIFrameElement具有contentDocument属性,但在我看来,typescript应具有特定类型。但是我一直无法找到它。

任何?

1 个答案:

答案 0 :(得分:8)

您可以将其转发/断言为HTMLObjectElementcontentDocument property

let map = document.getElementById("mapObject") as HTMLObjectElement;
let svgDoc = map.contentDocument; // should be fine