Использование 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.

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