Búsqueda de sitios web

¿Existe un tipo válido de TypeScript para un documento SVG incrustado como un objeto HTML?


Estoy incrustando un objeto SVG en HTML de la siguiente manera:

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

Luego, quiero acceder a ello desde mis clases de TypeScript (desde Ionic 2, pero eso debería ser indiferente):

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

Esto funciona en el navegador, pero TypeScript se queja de ello:

typescript La propiedad 'contentDocument' no existe en el tipo 'HTMLElement'

Y peor aún, no funciona en el dispositivo, porque el compilador se niega a generar código para ello.

Mi solución/atajo temporal es hacer la conversión de la siguiente manera:

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

Esto funciona en el dispositivo, porque HTMLIFrameElement tiene la propiedad contentDocument, pero me parece que TypeScript debería tener un tipo específico para esto. Sin embargo, no he podido encontrarlo.

¿Alguien?

Respuesta #1

Puedes convertir/asegurar que sea un HTMLObjectElement que tiene la propiedad contentDocument:

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

Artículos relacionados