Я хочу получить объявленные атрибуты SVG программно.Это весь встроенный контент, что-то вроде этого:
<svg>
<path d="###########">
<animate from="5" to="0" begin="3s" dur="1s" etc etc>
</path>
</svg>
Звучит легко, peasy, верно?Но я бью стену.Я прочитал это , но для начала:
document.getElementsByTagName('path');
, похоже, не работает в IE, который является основной проблемой.Всегда возвращается undefined.
(я знаю, что IE поддерживает только скриптовую анимацию , вот и весь повод для этого.)
В любом случае, часть get работаетв Chrome, но когда этот Nodelist зарегистрирован в Dev Tools, консоль возвращает бесполезный
[object Nodelist]
, и когда я регистрирую отдельные пути, я получаю аналогичное:
[object Text]
, что тоже оченьпохож на IE, а не на обычный подробный объект javascript, что затрудняет определение того, что происходит под капотом.Наконец, когда я пытаюсь получить объявленные атрибуты анимации:
.getAttributeNS(null, 'dur')
, похоже, тоже не работает, даже в Chrome.Dev Tools говорит, что текст объекта пути не имеет метода getAttributeNS.То же самое для простого старого 'getAttribute'.Я также попробовал ".contentDocument" в файле SVG, но это тоже не работает.В принципе, у меня нет никаких проблем с установкой этих значений в любом браузере а-ля:
animation.setAttributeNS(null,'begin',startTimeRounded + 's');
Я просто не могу получить их.Любое руководство высоко ценится.
PS Селекторы jQuery не работают с элементами SVG, и, кроме того, я бы предпочел не загружать библиотеку для решения этой небольшой проблемы.
PPS I 'итерация по огромному количеству путей, поэтому ответы, предлагающие установить уникальные идентификаторы для каждого элемента, в этом случае не помогут.Я хочу получить элементы по имени.Кросс-браузер лучше, но он должен работать в IE ...