IE (или, возможно, библиотека Javascript) Добавление пространства имен SVG дважды

Я изменил это и перемещаю этот комментарий в начало.

В соответствии со Stackru, это может быть ошибкой в ​​некоторых базовых вещах, которые никто не может исправить. Но я рассмотрю лучший способ, который вы предлагаете оставить в рамках нашего приложения для удаления ложного атрибута в качестве решения. Иначе было бы несправедливо.

У меня есть странность, которую я пытаюсь решить, что сбивает с толку. Во-первых, неясно, что это IE, за исключением того, что такое поведение не происходит в Chrome или Firefox. Мы используем библиотеки графиков от Anychart и D3 для генерации SVG на странице. Все это замечательно. Приложение является приложением для печати и извлекает разрешенный css + html в отдельный div и отправляет его через REST в службу форматирования.

Проблема заключается только в IE и только в диаграмме Anychart. Если вы изучите эту страницу:

http://www.xportability.com/XEPOnline/FOTestSuite.html

И посмотрите на пример изображения #4, вы увидите график. Используя IE и DOM Explorer, вы увидите это:

Explorer DOM

Все выглядит хорошо. На самом деле все в порядке, если это было "реальным". Если вы в любом случае используете javascript для извлечения SVG (самый простой метод - это копирование HTML в Explorer DOM), вы увидите, что HTML этого элемента на самом деле:

 <svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" xmlns="http://www.w3.org/2000/svg">

Даже используя document.getElementById("anychart").outerHTML в консоли возвращает этот элемент таким образом.

Обратите внимание на двойное объявление пространства имен. Ну, это проблема, так как это ошибка.

  • Этого не происходит ни на графике D3, ни на статическом графике. только этот график.
  • Этого не происходит ни в Chrome, ни в Firefox.
  • И что самое странное, он даже не отображается таким образом в обозревателе DOM IE.

Я что-то здесь упускаю? Что-то еще, что мы делаем, заставляет IE делать это?

ПРИМЕЧАНИЕ: я не ищу ответы, такие как применить регулярное выражение к сериализованной строке или тому подобное. Мы можем сделать это (на самом деле мы уже это делаем), чтобы закрыть пустые (незамкнутые) теги HTML для создания корректного XML.

ПРИМЕЧАНИЕ 2. Я не исключаю, что это может существовать в используемой библиотеке Anychart JS или быть ошибкой в ​​Internet Explorer. Он появляется только с использованием библиотеки Anychart. С ними связались, чтобы прокомментировать. Однако тот факт, что IE отображает только одно пространство имен в проводнике DOM, а затем два при экспорте, подозревает, что это потенциально проблема IE. С ними также связались через их поддержку.

Итак, я понимаю, что, возможно, нет "ответа" на этот вопрос... это может быть ошибка в другой библиотеке или в браузере.

Таким образом, эта демонстрация работает только в Chrome и Firefox на данный момент... пока мы не разберемся с этим и не решим каким-либо другим способом

1 ответ

Решение

После глубокого анализа Anychart Javascript библиотека была виновником. Они исправили ошибку, и это больше не происходит.

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