Carica evento non triggersto su Safari durante il ricaricamento della pagina

Ho un semplice SVG caricato all’interno di un tag object come il seguente codice. Su Safari, l’evento load viene generato una volta sola, quando carico la prima volta la pagina dopo aver aperto il browser. Tutte le altre volte no. Sto usando l’evento load per inizializzare alcune animazioni con GSAP, quindi ho bisogno di sapere quando SVG è completamente caricato prima di essere in grado di selezionare i nodes DOM. Una soluzione rapida che sembra funzionare è utilizzando setTimeout invece di collegarsi all’evento, ma sembra un po ‘strano dato che le reti più lente non possono caricare l’ object nel tempo specificato. So che questo evento non è veramente standardizzato, ma non penso di essere la prima persona che ha affrontato questo problema. Come lo risolveresti?

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

Sembra più che il problema è che, quando i dati sono memorizzati nella cache, l’evento di caricamento si triggers prima di colbind il gestore.

Quello che puoi provare è resettare l’attributo dati una volta collegato l’evento:

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