D3 отображает SVG-диаграмму только при переходе назад или вперед на страницу

#javascript #html #django #d3.js #svg

#javascript #HTML #django #d3.js #svg

Вопрос:

На моем локальном D3 отображает svg-диаграмму только при переходе назад или вперед на страницу. Он не отображается при начальной загрузке страницы.

Следуя приведенному здесь руководству по D3, я могу заставить диаграмму идеально отображаться в codepen или при возврате на страницу.

Я запускаю страницу с помощью приложения flatpages от Django. Я пробовал несколько браузеров и инструментов разработки. Страница не возвращает ошибок, и данные загружаются до вызова функции для создания диаграммы.

Есть ли способ отладки D3 или функции Javascript, которую мне не хватает?

Я подозреваю, что это как-то связано с асинхронностью, и мне нужно добавить window.onload, как показано ниже, но пока это не сработало.

 document.addEventListener("DOMContentLoaded", function(event) {
    fetch(api)
        .then(function(response) { return response.json(); })
        .then(function(data) {
            var parsedData = parseData(data);
            window.onload = function() {
                drawChart(parsedData);
            }
        })
        .catch(function(err) { console.log(err); })
    });
 

Заранее спасибо за любую помощь.

Ответ №1:

Оказывается, ошибка не была связана, это не была проблема асинхронности. Fontawesome ранее добавлял svg на страницу, что затем вызывало проблемы с моей функцией рисования диаграмм JavaScript. Чтобы исправить, мне пришлось изменить то, что d3 выбирал из «svg», на определенный класс.