В IE9 импортированные узлы, похоже, не распознаются как элементы SVG

Я добавляю пару элементов в существующий документ SVG, используя метод importNode(); все вроде бы хорошо; может получить новые добавленные элементы, используя getElementsByTagName [getElementById () не работает], но проблема в том, что импортированные элементы не распознаются как SVGGElements, а упоминаются просто как [объектный элемент]. есть идеи, ребята?

1 ответ

Решение

Элементы внутри XML-файла должны определять, в каком пространстве имен они находятся, иначе они будут проанализированы как неизвестные XML-элементы.

Это верно даже в том случае, если корнем файла XML был элемент . Чтобы убедиться, что элементы анализируются как правильные элементы SVG, вы должны добавить xmlns="http://www.w3.org/2000/svg" и, возможно, xmlns="http://www.w3.org/1999/xlink (если вы используете атрибуты xlink в любом месте файла).

Если, с другой стороны, вы проанализировали элементы с использованием анализатора html5, ограничения аналогичны, но немного отличаются, поскольку атрибуты xmlns не распознаются в html (только в xhtml). В таком случае вам понадобится как минимум корневой элемент , чтобы разметка анализировалась как svg, и вам нужно убедиться, что разметка определяется как html5 (избегая любых устаревших режимов отката для конкретного браузера), Таким образом, вы не можете иметь элемент в качестве корня, если вы используете парсер html5.

Другие вопросы по тегам