Как вы получаете доступ к содержимому SVG файла в элементе <img>?
Скажите, что у вас это в вашем HTML:
<img src='example.svg' />
Как вы можете получить доступ к содержимому (т.е. <rect>, <circle>, <ellipse> и т.д.) example.svg через JavaScript?
Ответ 1
Невозможно получить DOM ссылочного svg из элемента img.
Если вы используете <object>, <embed> или <iframe>, то вы можете использовать .contentDocument (предпочтительно) для получения ссылки svg или .getSVGDocument, которая может быть более совместима со старыми плагинами svg.
Здесь пример, показывающий, как получить DOM ссылки svg.
Ответ 2
Я уверен, что это невозможно. Внешний SVG не является частью DOM в способе встроенного SVG, и я не верю, что вы можете получить доступ к дереву SVG DOM из загружаемого документа.
Что вы можете сделать, это загрузить SVG как XML, используя запрос AJAX и вставить его в DOM в качестве встроенного SVG, после чего вы сможете ходить и манипулировать. Этот пример D3 демонстрирует технику. Я думаю, что используемая здесь функция d3.xml() более или менее эквивалентна jQuery $.ajax() с dataType: "xml".
Ответ 3
Если вы используете inlining SVG в CSS url(data:...) или просто используете фон url(*.svg), вы можете вставлять их в DOM с svg-embed.
Поддержка Chrome 11+, Safari 5+, FireFox 4+ и IE9 +.
Ответ 4
Нет, это невозможно, но вы можете просто преобразовать <img> в <svg>, как упомянуто ЗДЕСЬ, и вы можете просто получить доступ к узлам в svg в DOM.