Ich habe Code wie diese, mit jQuery-svgSVG-Onload-Ereignis zu früh aufgerufen?
function replaceRaster(){
$('#png').remove()
a = $('#graphic')
b = a.svg(a)
a.load('IDC_Energy.svg',
{onLoad:bind})
svg = document.getElementById("graphic").children[0]
console.log(svg)
svg.addEventListener('load', bind)
}
Der Event-Handler, bind
, bevor jQuery-svg-dom abgefeuert wird der Lage ist, Elemente innerhalb der SVG-Daten auszuwählen. Mein Code soll über das SVG schauen und verschiedene Klassen zuweisen und Listener an verschiedene Elemente anhängen, aber es kann keine finden. Wenn ich in der Konsole bind
rufe, nachdem alles geladen ist, kann es alle SVG-Elemente finden.
Mache ich etwas falsch? Gibt es eine andere Möglichkeit zu erkennen, wann das SVG-DOM verfügbar ist? Ich habe über einen Timer nachgedacht, aber das ist wirklich hacky, besonders wenn man bedenkt, dass meine SVG-Dateien einige MB groß sein könnten.
Die Seite lädt die SVG-Daten asynchron, ja. Ich habe eine Schleife verwendet, um zu prüfen, ob der Inhalt alle 50ms oder so fertig ist (jetzt vergessen). –