Я изменил это и перемещаю этот комментарий наверх.
В соответствии со Stackoverflow, это может быть ошибка в некоторых основных вещах, которые никто не может исправить. Но я рассмотрю лучший метод, который вы предлагаете, в рамках нашего приложения, чтобы удалить ложный атрибут в качестве решения. Иначе было бы несправедливо.
У меня есть странность, которую я пытаюсь решить, которая сбивает с толку. Во-первых, неясно, что это IE, за исключением того, что такое поведение не происходит в Chrome или Firefox. Мы используем библиотеки диаграмм от Anychart и D3 для создания SVG на странице. Все это здорово. Приложение представляет собой приложение для печати и извлекает разрешенный css + html в отдельный div и отправляет его через REST в службу форматирования.
Проблема заключается только в IE и только с диаграммой Anychart. Если вы изучите эту страницу:
http://www.xportability.com/XEPOnline/FOTestSuite.html
И посмотрите на пример изображения № 4, вы увидите диаграмму. Используя IE и проводник 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.
- И что самое странное, он даже не отображается таким образом в собственном проводнике IE DOM.
Я что-то упустил здесь? Есть ли что-то еще, что заставляет IE делать это?
ПРИМЕЧАНИЕ. Я не ищу ответы, такие как применение регулярного выражения к сериализованной строке или тому подобному. Мы можем сделать это (на самом деле мы уже делаем), чтобы закрыть пустые (незакрытые) теги HTML, чтобы сделать корректный XML.
ПРИМЕЧАНИЕ 2. Я не сбрасываю со счетов тот факт, что это может существовать в используемой базовой библиотеке Anychart JS или быть ошибкой в Internet Explorer. Он появляется только при использовании библиотеки Anychart. С ними связались для комментариев. Однако тот факт, что IE показывает только одно пространство имен в проводнике DOM, а затем два при экспорте, подозревает, что это потенциальная проблема IE. С ними также связались через их поддержку.
Итак, я понимаю, что на этот вопрос может не быть "ответа".. это может быть ошибка в другой библиотеке или в браузере.
Таким образом, эта демонстрация работает только в Chrome и Firefox на данный момент ... пока мы не взломаем это или не решим каким-либо другим способом.
innerHTML
метод вывода HTML, который был исправлен IE (таким образом, в любой момент ваш HTML не должен быть недействительным - что такое SVG без пространства имен). Это все еще странно, и я тоже в тупике. Я предполагаю, что если вам требуется, чтобы в вашем выводе был один атрибут, вы можете использоватьremoveAttribute
, который удаляет правильный атрибут один. (ах, вот моя отладка проблемы: jsfiddle.net/C4vJE/2) - person eithed   schedule 25.07.2014