Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

149
Vistas
Why I cannot reach the svg objects using from html object?

Example on the Internet, they can call objects in svg files easily. But i cannot reach them. Here is my html code``

<html lang="en">
<head>
<title>SVG Example</title>
    <script src="mysvg.js"></script>
</head>
<body>
    <div>
        <button style="width: 100px; height: 50px" onclick="changeColor()">Change Color</button>
        <object data="test.svg" type="image/svg+xml"></object>
    </div>
</body>
</html>

This is my .js file code:

function changeColor() {
  const svg = document.getElementById("layer1");
  const motor1 = document.getElementById("g320");
  const ellipse = document.getElementById("ellipse205");
  ellipse.setAttribute("style","fill:green;stroke:green;stroke-width:2");
  motor1.appendChild(svg);
  ellipse.appendChild(motor1);
}

What i do wrong, why this is not working? I do not understand.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

The content of a SVG <object> is part of a different DOM than the host document. Accessing it is a two-step process:

  • wait for the content to load
  • access its DOM with HTMLObjectElement.contentDocument

Like this:

document.querySelector('object[data="test.svg"]').addEventListener("load", function () {
    document.querySelector('button').addEventListener("click", changeColor);
}

function changeColor() {
    const innerDocument = this.contentDocument;
    const svg = innerDocument.getElementById("layer1");
    const motor1 = innerDocument.getElementById("g320");
    const ellipse = innerDocument.getElementById("ellipse205");
    ellipse.setAttribute("style","fill:green;stroke:green;stroke-width:2");
    motor1.appendChild(svg);
    ellipse.appendChild(motor1);
}

Note that this sort of access is subject to the Same-origin Policy. It means that the host HTML file and the SVG either need to be served from the same domain, or from localhost, or a CORS header must explicitely allow it. If you load them with the file:// protocol, this.contentDocument will also return null.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda