Приложение appendChild с SVG возвращает HIERARCHY_REQUEST_ERR (3) в IE9.0 - PullRequest
1 голос
/ 10 ноября 2011

Следующий код отлично работает в chrome и Firefox, но в IE 9.0

//select div where svg is to be inserted
var selSVG = document.getElementById('SVGMap');
//clear any SVG
while (selSVG.hasChildNodes()) {
selSVG.removeChild(selSVG.lastChild);
}
//add the new svg
selSVG.appendChild(loadXML("roomlayouts/"+SelectedRoomAddress));

ломается, когда loadXML (...) возвращает документ svg из другой папки и с ошибкой в ​​последней строкеИсключение DOM: HIERARCHY_REQUEST_ERR (3) строка 300 символов 2

Есть идеи, почему он не работает в IE 9.0?

Реализация здесь: http://chocolatezombies.com/classroom/classroom.html

1 Ответ

3 голосов
/ 10 ноября 2011

Вам необходимо импортировать элемент из загруженного документа в документ selSVG, прежде чем вы сможете добавить его.В соответствии со спецификациями, вы должны сделать:

var room = loadXML(...);
if (room.nodeType==9){         // You can't import entire documents, so
  room = room.documentElement; // get the root node of the document
}
room = selSVG.ownerDocument.importNode( room );
selSVG.appendChild( room );

Однако IE9 неправильно реализует importNode.Я предоставил обходной метод для этого как часть моего ответа на этот вопрос: Как динамически вставить изображение SVG в HTML?

...