2016-10-13 2 views
1

ich ein SVG-Objekt in HTML bin Einbettung wie folgt:Gibt es einen gültigen Typoskript-Typ für ein SVG-Dokument, das als HTML-Objekt eingebettet ist?

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

Dann will ich es von meinen Typoskript Klassen erreichen (von Ionic 2, aber das sollte gleichgültig sein):

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

Dies funktioniert auf Browser, aber Typoskript beschwert sich über sie:

Typoskript Property ‚contentdocument‘ existiert nicht auf Typ ‚Htmlelement '

Und schlimmer noch, es funktioniert nicht in dem Gerät, da der Compiler Code für sie zu generieren verweigert.

Meine temporäre Hack/Lösung wirft wie folgt:

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

Dies funktioniert in der Vorrichtung, weil HTMLIFrameElement die Eigenschaft contentdocument hat, aber es scheint mir, dass Typoskript einen bestimmten Typ für diese haben sollte. Ich konnte es jedoch nicht finden.

Jeder?

Antwort

4

können Sie werfen/behaupten, es zu HTMLObjectElement die die contentDocument property hat:

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

Wow, das war schnell. Ich habe das offensichtliche HTMLObjectElement bei der Suche in der SVGElement-Familie übersehen. Danke auch für die Hilfe beim Vermeiden der Besetzung an erster Stelle. Viel eleganter auf diese Weise :-) – jrierab

Verwandte Themen