Вывести вывод консоли JavaScript из r2d3 в консоль браузера вместо визуализации? - PullRequest
2 голосов
/ 08 апреля 2019

Вывод на консоль JavaScript из r2d3 отображается непосредственно в визуализации средства просмотра RStudio вместо консоли javascript.См. документацию .

. Это также похоже на поведение, когда

r2d3::r2d3(..., viewer = 'browser')

Т.е. console.log() не выводится на консольдаже в браузере.

Есть ли чистый способ изменить это поведение, чтобы console.log() информация в r2d3 D3.js отправлялась на консоль браузера?

1 Ответ

2 голосов
/ 16 апреля 2019

R2D3 перезаписывает консоль в теневом DOM, содержащем код визуализации.Вот почему поведение консоли изменяется - это может выглядеть красиво, но не позволяет более внимательно осматривать объекты или скрывать консоль.

Похоже, что нет никаких параметров, которые могут изменить это, когдасоздание визуализации.Это оставляет две опции, изменить пакет или добавить строку javascript для визуализации.Здесь я остановлюсь на последнем.

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

console = d3.window(svg.node()).console;

Существуют другие способы доступа к окну, но этого должно быть достаточно, и оно может быть самым коротким, оно не будет работать для d3v3, который мог бы использовать:

console = svg.node().ownerDocument.defaultView.console;

Да, это не идеал и немного хакерский, но это, безусловно, проще, чем изменить источник R (и продолжать делать это, когда пакет обновляется).

...