[问题昨天也发布到了https://groups.google.com/d/msg/shiny-discuss/1UmzvZJwM54/gdMmX7QQ-eIJ,到目前为止没有任何答案]
我一直在开发一个Shiny应用程序,该应用程序既可以显示为表格又可以显示为rCharts(NVD3)图表,其中包含一些期刊文章的原始高度测量数据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-但在我的Shiny表中,应出现它们的最后(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。经过测试:当我将具有ImpactStory JS需要了解的所有属性的非动态HTML代码手动添加到ui.R时,这些小部件都可以正常显示。另外,如果我在server.R中添加输出的数据帧中的script元素,则将渲染小部件,而且-永远不会停止这样做,从而导致循环:)我想我需要的是与这里的问题类似,问题2
好吧,我已经找到了一个不太理想但暂时可以解决的解决方案。
renderTable使用xtable呈现HTML表,您可以在其中定义自己的清理功能,请参见http://cran.r-project.org/web/packages/xtable/vignettes/xtableGallery.pdf(第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))
由于某种原因,我尚不了解,起初有一组双重小部件。
谢谢你的耐心。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句