#javascript #node.js #d3.js #scatter-plot #jsdom
Вопрос:
Я принимаю код для расчесываемой матрицы рассеяния, используя d3 и jsdom на стороне сервера для создания SVG.
SVG отлично генерируется.
Однако в сценарии узла я также привязываю данные к некоторым элементам svg, которые позже используются на стороне клиента для взаимодействия с событиями мыши.
Вот (хорошо известный) снимок:
var cell = svg.selectAll(".cell") .data(cross(traits, traits)) ...
В конце я просто сохраняю сгенерированный HTML в файл с помощью
jsdom.window.document.querySelector("html").outerHTML;
что на самом деле не сохраняет __data__
свойства .cell
элементов.
Конечно, любой вызов метода, который использует эти значения на стороне клиента, завершается ошибкой с неопределенным значением.
На стороне сервера при отладке я прекрасно вижу __data__
свойство, назначенное каждому из моих элементов svg.
Мне просто интересно, есть ли способ сообщить jsdom об экспорте/сохранении даже свойств, сохраненных во время генерации, или это можно сделать позже только на стороне клиента???
Комментарии:
1. Я думаю, что на этот вопрос было бы легче ответить, если бы вы могли дать нам подсказку о том, чего вы пытаетесь достичь с помощью этого. О каком объеме данных мы говорим? Кроме того, может быть полезна выдержка из ваших данных.
2. Привет @altocumulus, как я уже упоминал, независимо от данных (содержимого, объема и т.д.), Я просто хочу экспортировать HTML, содержащий свойство данных , ранее видимое и доступное на стороне сервера в объекте jsdom. Причина, по которой я выполняю генерацию .svg на стороне сервера, не имеет отношения к atm. В любом случае свойство данных , созданное с помощью d3, содержит простые данные, например, в виде координат ячеек.
3. Как насчет сброса данных внутри переменной javascript внутри a
script
, рядом с экспортом SVG?4. @Mehdi это один из вариантов, если с помощью jsdom ничего нельзя сделать, чтобы «сохранить» эти данные в свойстве элемента.