Вывод консоли JavaScript из r2d3
визуализируется непосредственно в визуализации средства просмотра RStudio вместо консоли javascript. См. документация.
Это также похоже на поведение, когда
r2d3::r2d3(..., viewer = 'browser')
То есть console.info()
не выводится на консоль даже в браузере.
Есть ли чистый способ изменить это поведение, чтобы console.info()
информация в r2d3
D3.js отправлялась на консоль браузера?
R2D3 перезаписывает консоль в теневой модели DOM, которая содержит код визуализации. Вот почему поведение консоли изменено — что может выглядеть красиво, но не позволяет более внимательно осматривать объекты или скрывать консоль.
Кажется, нет никаких параметров, которые могут изменить это при создании визуализации. Это оставляет два варианта: изменить пакет или добавить строку javascript в визуализацию. Я пойду с последним здесь.
Само окно документа по-прежнему сохраняет поведение консоли по умолчанию, поэтому мы можем использовать его для переопределения поведения консоли теневого DOM. В визуализации в верхней строке добавьте:
console = d3.window(svg.node()).console;
Существуют и другие методы доступа к окну, но этого должно быть достаточно, и он может быть самым коротким, он не будет работать для d3v3, который может использовать:
console = svg.node().ownerDocument.defaultView.console;
Да, это не идеально и немного хакерски, но это, безусловно, проще, чем изменить исходный код R (и продолжать делать это при обновлении пакета).
Похоже, та же проблема - я не могу проверить на данный момент. Проблема в том, что r2d3 перезаписывает поведение console.info по умолчанию, чтобы показать сообщение об ошибке, но это сводит все объекты к строкам, поэтому вы получаете что-то зарегистрированное, например Object obejct,... а не сам объект.
Спасибо, Андрей! Есть ли какое-нибудь решение/способ обойти это? Почти невозможно отладить, не видя консоли.
О чувак. Потрясающий. Я протестировал это решение, и, похоже, оно работает. Теперь я действительно могу использовать r2d3. Спасибо большое!
Итак, я думаю, что у меня похожие проблемы с r2d3, но я не уверен, что это на 100% то, о чем говорил оригинальный постер. Я был бы очень признателен, если бы кто-нибудь мог взглянуть на новый вопрос, который я разместил здесь (заранее спасибо): stackoverflow.com/questions/69859445/…