> ¿Hay alguna manera de obtener el tamaño de SVG mediante el uso de JavaScript?
No y sí.
No:
JavaScript no será capaz de acceder a los contenidos de los archivos SVG que están sentados en el navegador.
Así que no sería posible tener una página que contenga una imagen SVG arbitraria y luego tener JavaScript para determinar algo desde el archivo SVG.
Los únicos datos JS puede acceder a él que contenían dentro de DOM de la página: el marcado original y las modificaciones relacionadas con el JS para el DOM. Se podía acceder a los atributos del elemento object
y nodos descendientes, pero eso no va a dar visibilidad a nada más de lo que se puede ver si nos fijamos en la página de marcado a sí mismo.
Sí:
JS (en los navegadores modernos) puede analizar cualquier cadena XML en un DOM y luego acceder a los contenidos empleando métodos basados en DOM.
Puede obtener el contenido del archivo SVG emitiendo una solicitud xmlHttpRequest-style (es decir, JS realiza un HTTP GET en la URL del archivo SVG). JS tendría entonces la cadena XML completa del archivo SVG y luego puede acceder a todo lo que quiera.
> ¿O quizás debería simplemente mirar el archivo svg xml para averiguar el tamaño de la etiqueta superior svg?
Esto sería más factible por el momento.
La única solución basada en JS requeriría que JS realizara una solicitud GET en la URL del archivo SVG (como anteriormente), lo que es poco probable que sea factible: cada carga de página puede dar como resultado la descarga doble de cada archivo SVG y el El análisis del XML de SVG en un DOM por JS podría requerir demasiados recursos.
Tener JS recuperar el contenido XML de SVG y analizarlo en un DOM para recuperar solo las dimensiones de la imagen es un poco exagerado. Es perfectamente posible, pero generalmente no es práctico.
Consultar el contenido XML del SVG del lado del servidor, determinar un ancho y alto adecuados y luego agregar dinámicamente los atributos width
y height
antes de devolver el marcado al navegador sería su mejor opción.
La parte "no" solo se aplica si se trata de una referencia de origen cruzada, consulte http://stackoverflow.com/questions/231679/get-size-of-svg-graphics-by-javascript/1577890#1577890 –