javascript html5 svg onload-event object-tag

javascript - El evento de carga no se activa en Safari al volver a cargar la página



html5 svg (1)

Parece que el problema es que, cuando los datos se almacenan en caché, el evento de carga se dispara antes de adjuntar el controlador.

Lo que puede intentar es restablecer el atributo de datos una vez que haya adjuntado el evento:

object.addEventListener(''load'', onload_handler); // reset the data attribte so the load event fires again if it was cached object.data = object.data;

Tengo un SVG simple cargado dentro de una etiqueta de object como el código a continuación. En Safari, el evento de load se activa solo una vez, cuando cargo la primera vez la página después de abrir el navegador. Todas las otras veces no lo hace. Estoy usando el evento de load para inicializar algunas animaciones con GSAP, por lo que necesito saber cuándo el SVG está completamente cargado antes de poder seleccionar los nodos DOM. Una solución rápida que parece funcionar es usar setTimeout lugar de adjuntarse al evento, pero parece un poco incómodo ya que las redes más lentas no podrían haber cargado el object en el tiempo especificado. Sé que este evento no está realmente estandarizado, pero no creo que sea la primera persona que enfrentó este problema. ¿Cómo lo resolverías?

var myElement = document.getElementById(''my-element'').getElementsByTagName(''object'')[0]; myElement.addEventListener(''load'', function () { var svgDocument = this.contentDocument; var myNode = svgDocument.getElementById(''my-node''); ... }