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'');
...
}