> Есть ли способ получить размер SVG с помощью JavaScript?
Нет и да.
нет
No:
JavaScript не сможет получить доступ к содержимому файла SVG, который находится в браузере.
Так что было бы невозможно иметь страницу, содержащую произвольное изображение SVG, а затем заставить JavaScript определять что-либо из самого файла SVG.
Единственные данные, которые JS может получить к нему доступ, которые содержатся в DOM страницы: исходная разметка плюс любые связанные с JS модификации DOM. Вы можете получить доступ к атрибутам элемента object
и дочерним узлам, но это не даст вам больше ничего, чем вы можете увидеть, если сами посмотрите на разметку страницы.
Да
JS (в современных браузерах) может анализировать любую строку XML в DOM и затем получать доступ к содержимому с помощью методов на основе DOM.
Вы можете получить содержимое файла SVG, выполнив запрос в стиле xmlHttpRequest (т. Е. JS выполняет HTTP GET для URL файла SVG). Тогда у JS будет полная XML-строка SVG-файла, и вы сможете получить доступ ко всему, что захотите.
> Или, может быть, я должен просто взглянуть на XML-файл SVG, чтобы узнать размер из верхнего тега SVG?
Это было бы гораздо более возможным.
Единственное решение на основе JS потребовало бы, чтобы JS выполнил запрос GET по URL-адресу файла SVG (как указано выше), что вряд ли осуществимо - каждая загрузка страницы может привести к двойной загрузке каждого файла SVG и синтаксическому анализу. XML SVG в DOM от JS может быть слишком ресурсоемким.
Если JS извлекает XML-контент SVG и анализирует его в DOM для получения только измерений изображения, это немного излишне. Это вполне возможно, но, как правило, не практично.
Запрос на серверный контент SVG XML на стороне сервера, определение подходящей ширины и высоты и последующее динамическое добавление атрибутов width
и height
перед возвратом разметки в браузер будет вашим лучшим выбором.