Ich habe eine Seite, die über jQuery dynamisch SVGs zur Seite hinzufügt:
%Vor%Ich brauche Zugriff auf das SVG-Dokument (um eine Variable in den SVG-Skriptkontext zu "schieben"), aber das SVG muss dafür geladen werden. Mein Problem ist, dass ich das Lastereignis nicht funktioniere. Es wird keine Warnung angezeigt.
Wie geht es?
Bearbeiten: Es scheint, als würde jQuery einfach verhindern, ein "load" -Ereignis an ein Nicht-Bild-oder-Dokument-Element zu binden, also verwende ich einfach die "offizielle" addEventListener () -Funktion (nicht unterstützt von blödem IE, aber das ist für mich kein Problem):
%Vor% Ich weiß nicht, was grid
in Ihrem Beispiel ist, aber wenn es ein normales dom-Element ist, dann sollte der load
api-Aufruf das in den api-Dokumenten definierte Format haben. Derzeit sieht es so aus, als ob Sie versuchen, einen Funktionsaufruf zu laden, der keinen Sinn ergibt.
so
%Vor% UPDATE: Ich habe nicht versucht, SVG-Daten mit HTML in den Browser zu laden, aber die W3C-Dokumente erwähnen nicht, dass das <object>
-Tag dafür verwendet werden könnte. Ihr Beispiel verwendet <embed>
Haben Sie versucht, anstelle von <object>
?
UPDATE 2:
Ich denke nicht, dass die obige Lösung auch funktionieren wird, da das JS onload
-Ereignis von den folgenden Tags unterstützt wird: <body>, <frame>, <frameset>, iframe, <img>, <input type="image">, <link>, <script>, <style>
- Ich nehme an, dass jQuery gerade dabei ist, also funktioniert es nur für diese Elemente. Die jQuery-Dokumentation sagt, dass der Event-Handler von images, scripts, frames, iframes
und dem window
-Objekt unterstützt wird.
Wenn das also nicht funktioniert, müssen Sie wahrscheinlich nur den Methodenaufruf .load()
verwenden und die Ergebnisse verarbeiten. Vielleicht können Sie die SVG Embed-Tags in separate HTML-Dateien einfügen oder ein Skript, das die HTML-Embeds generiert.
UPDATE 3:
Es scheint mindestens zwei richtige Lösungen für dieses Problem zu geben.
Tags und Links jquery onload-event object-tag