0

[这个问题昨天也发布到https://groups.google.com/d/msg/shiny-discuss/1UmzvZJwM54/gdMmX7QQ-eIJ至今没有答案]

我一直在开发一个 Shiny 应用程序,它以表格和 rCharts (NVD3) 图表的形式显示一些期刊文章的一些原始 altmetric 数据http://spark.rstudio.com/ttso/alt/

我的带有示例数据的代码https://gist.github.com/tts/6990101

到目前为止一切都很好,但是现在我在尝试将http://impactstory.org/api-docs中解释的 JavaScript 小部件包含在表格中时遇到了困难。这些小部件工作得很好,就像在这个 HTML 示例中一样http ://users.tkk.fi/sonkkila/alt/arts.html - 但在我的闪亮表中,它们应该出现的最后一个(IS)列是空的。

当我离开未清理的表格时,我可以看到 HTML 代码在那里 - 但在清理后,它就消失了。server.R 中的 renderTable 代码:https ://gist.github.com/tts/6990101#file-server-r-L69-L85

从 HTML 源代码中,我还可以看到 ImpactStory 脚本应该位于页面顶部。

欢迎大家指点!

免责声明:虽然我已经使用 R 和 Shiny 有一段时间了,但我认为自己真的是一个 JavaScript/CSS 新手,所以我可能在这里遗漏了一些明显的东西。

编辑:澄清一下:当然,净化的 HTML 代码在那时消失了,因为没有文本元素值。我想知道a)不同的JS脚本之间是否存在冲突,也许它们需要以不同的顺序出现(必须询问ImpactStory)或b)xtable()如何生成输出或c)存在一些问题Shiny 不知道如何与 Impactstory.js 脚本进行通信,或者 d) Shiny 根本看不到该脚本。我应该构建一个自定义输出组件吗?

EDIT2:AFAIK 问题在于反应输出的表看不到 JavaScript。测试:当我手动将非动态 HTML 代码添加到 ui.R 以及 ImpactStory JS 需要知道的关于一篇文章的所有属性时,小部件呈现正常。另外,如果我在 server.R 中添加输出的数据框中的脚本元素,则会呈现小部件,而且 - 永远不会停止这样做,从而导致循环:) 我想我需要的是类似于这里的问题,问题 nr 2

4

1 回答 1

0

好吧,我找到了一个不太漂亮但暂时可以使用的解决方案。

renderTable 使用 xtable 呈现 HTML 表格,您可以在其中定义自己的清理功能,请参阅http://cran.r-project.org/web/packages/xtable/vignettes/xtableGallery.pdf (p. 7)

在这里,我只是将列标题“Widget”替换为定义脚本的字符串:

output$table <- renderTable({  
   ...
  }, include.rownames = FALSE, sanitize.text.function = function(s) sub("Widget", "<script type=\"text/javascript\" src=\"http://impactstory.org/embed/v1/impactstory.js\"></script>", s))

由于我还不明白的原因,起初有一组双小部件。

谢谢你的耐心。

于 2013-10-20T12:34:51.960 回答