Использование XML в качестве источника данных в макете d3js не работает в Firefox
Я пытаюсь использовать файл XML в качестве источника данных для моей визуализации d3js. Он работает в браузерах на основе webkit, но не в firefox. Я считаю, что ошибка происходит из-за того, что элемент DOM не имеет функции forEach. 3djs, кажется, ожидает массив где-то, где он получает объект DOM. Но я не знаю где
Функция моих детей выглядит следующим образом.
var bubble = d3.layout.pack()
.sort(null)
.children(function(d){
var c = $("system",d);
if (c.length<=0) c = $("planet",d);
return c;
})
Это документ XML. Я напрямую передаю его на d3js через
node = viz.selectAll(".node")
.data(bubble.nodes(xmldata))
.enter().append("g")
.attr("class", "node")
Это живая демонстрация кода (которая работает в webkit, но не в firefox). А вот и полный исходный код.
1 ответ
Смотрите здесь для исправления.
Проблема заключается в том, что результат запроса jQuery передается непосредственно в виде узлов в макет D3. D3 записывает различные свойства, такие как "дети", непосредственно в каждый узел. Это может вызвать проблемы, если существует существующее свойство с тем же именем, используемое для другой цели, например, в этом случае "потомков" jQuery.