将 JavaScript 控制台输出从 r2d3 渲染到浏览器控制台而不是可视化?

2024-01-04

JavaScript 控制台输出r2d3直接呈现到 RStudio 查看器可视化中,而不是 JavaScript 控制台。看文档 https://rstudio.github.io/r2d3/articles/development_and_debugging.html.

这似乎也是当

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

即,console.log()即使在浏览器中也不会输出到控制台。

有没有一种干净的方法来改变这种行为,对于console.log()信息在一个r2d3D3.js要发送到浏览器控制台?


R2D3 覆盖包含可视化代码的影子 DOM 中的控制台。这就是控制台行为被改变的原因 - 这可能看起来不错,但不允许仔细检查对象或隐藏控制台。

创建可视化时似乎没有任何参数可以修改它。这留下了两个选项:修改包或向可视化添加一行 javascript。我在这里选择后者。

文档窗口本身仍然保留默认的控制台行为,因此我们可以使用它来重新定义影子 DOM 控制台行为。在可视化中,在顶行添加:

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

还有其他访问窗口的方法,但这应该足够了,并且可能是最短的,它不适用于 d3v3,它可以使用:

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

是的,它并不理想,而且有点 hacky,但它肯定比更改 R 源更容易(并在包更新时继续这样做)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 JavaScript 控制台输出从 r2d3 渲染到浏览器控制台而不是可视化? 的相关文章

随机推荐