Cómo acceder al contenido de la «embed» tag en HTML

Tengo un archivo SVG, y no quiero pegarlo dentro de el archivo HTML porque, así, se consigue sucio.
Así que después de consultar con w3schools, «embed» etiqueta parecía la forma más segura para incluir externo archivo SVG en HTML.

<embed src="path_to_svg" type="image/svg+xml" id='svgsource' />

Sin embargo, necesito acceder a los elementos svg a través del DOM mediante javascript en el archivo html principal. Desafortunadamente, ni los

document.getElementById('my_svg_id')

ni

document.getElementById('svgsource').contentDocument

funciona en cualquier navegador. El uso de «objeto» de la etiqueta de no hacer el truco.

OriginalEl autor narengi | 2011-12-13

5 Kommentare

  1. 8

    Completa acerca de turno!

    Resulta que usted puede, ver en este enlace: http://xn--dahlstrm-t4a.net/svg/html/get-embedded-svg-document-script.html

    (También, vaya y hasta el voto de algunos de Erik Dahlström del otras respuestas a darle algunos puntos que para mí el secuestro de su respuesta!)

    Así que estás diciendo que yo debería tener todo el SVG dentro del html, o voy a perder el acceso a ella, a la derecha? Porque de lo que he entendido, las opciones para incluir un SVG es con <embed> , <objeto> o <iframe>
    Yo creo que sí, sí. Como digo, sin embargo, usted puede cargar toda la svg en un div con ajax en el fin de mantenerlo separado, si se desea.
    Como alternativa, puede utilizar un iframe – usted puede ser capaz de acceder a él utilizando la forma habitual allí.

    OriginalEl autor Rich Bradshaw

  2. 8

    Uso .getSVGDocument(). Esto parece funcionar para <embed>, <object> y <iframe>:

    document.getElementById('svgsource').getSVGDocument()

    Para <object> o <iframe> también puede utilizar .contentDocument:

    document.getElementById('svgsource').contentDocument

    Para IE7 o IE8, creo que estás de suerte.

    Creo que getSVGDocument funciona en IE7/8 si el SVG de Adobe plugin está instalado, en incrustar elementos solamente. Pero yo no puedo recomendar que la configuración es mucho mejor actualizar a un navegador moderno.
    .getSVGDocument() es ahora en desuso.

    OriginalEl autor gilly3

  3. 0

    ¿Has probado con un <objeto> elemento en su lugar? (datos de atributos en lugar de src)

    Sí. mismo resultado.

    OriginalEl autor Shadow2531

  4. 0

    Creo en IE9 puede utilizar un <iframe> elemento de carga SVG en cuyo caso se puede acceder a la contentDocument de la propiedad, pero con versiones anteriores de IE, usted puede estar fuera de suerte. (Otros navegadores permiten el uso de contentDocument con <embed> y <object>.)

    OriginalEl autor Neil

  5. 0

    Respuesta corta: Usted puede probar alineaciones se hace referencia al archivo SVG contenido. Para <object> y <iframe> elementos, uso:

    e.parentElement.replaceChild(e.contentDocument.documentElement.cloneNode(true), e);

    …donde e es la referencia del elemento. Si es absolutamente necesario el <embed> elemento, a continuación, cambie .contentDocument en el anterior código .getSVGDocument() (los paréntesis son necesarios). Nota, sin embargo, que .getSVGDocument() es ahora obsoleta y por lo tanto no se recomienda, pero es ya también se recomienda usar <objeto> o <iframe> en lugar de <embed> de todos modos.

    Para una respuesta más completa, ver mi otro MODO de respuesta sobre el tema.

    OriginalEl autor Andrew Willems

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea