Ich versuche, das DOM eines SVG (eingebettet über die Embed-Tag und eine Daten-URL) mit Javascript aus dem übergeordneten Fenster zugreifen. Chrome bewertet die Daten-URL jedoch als Ursprungsverweis. Irgendeine Idee warum und wie man das verhindert? Leider habe ich keine Kontrolle über die Server-Seite, um Cross-Origin-Flags oder ähnliches zu setzen.Warum bewertet Chrome eine Daten-URL als Kreuzursprung?
Danke,
Andreas
var c = document.getElementById("myembed");
c.onload = function() {
\t var s = c.getSVGDocument();
\t alert(s.tagName);
}
<embed id="myembed" src="data:image/svg+xml;utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22100px%22%20height%3D%22100px%22%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20height%3D%22100%22%20width%3D%22100%22%20style%3D%22stroke%3A%23ff0000%3B%20fill%3A%20%230000ff%22%2F%3E%3C%2Fsvg%3E" type="image/svg+xml"></embed>
Warum einbetten Verwendung hier? embed ist für Plugins oder externe Anwendungen gedacht, daher ist es sinnvoll, es als fremd zu betrachten. –
Liebe Denys, das ist eine längere Geschichte. Der Haupttreiber für die Verwendung von Embed war die Trennung der DOMs mehrerer in einer Seite eingebetteter SVGs. Falls die SVGs z.B. gleiche Klassennamen mit unterschiedlichen Stilen stören sie. Ich weiß, dass es andere Möglichkeiten gibt. Es war nur eine Frage von Interesse. –