R Shiny错误解析用户定义的javascript?

时间:2014-04-06 21:54:38

标签: javascript r shiny

根据我收集的内容,如果我想在我的Shiny App中添加一些javascript,我会执行以下操作:

shinyUI(
    fluidPage(
        tags$head(
            tags$script("if (1 > 0) {1}")
        )
    )
)

但是,这会导致我的浏览器出错,因为如果你查看了来源'你看到Shiny生成的实际javascript是:

<script>if (1 &gt; 0) {1}</script>

>似乎错误地转换为&gt;。现在,这是因为我没有以正确的方式在Shiny中包含javascript,还是一个bug(或者确实是一个功能)?更重要的是,有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

tags函数执行HTML转义。如果您不想执行转义,则需要使用HTML函数:

require(shiny)
runApp(list(
  ui = bootstrapPage(
    numericInput('n', 'Number of obs', 100),
    plotOutput('plot'),
    tags$head(
      tags$script(HTML("if (1 > 0) {1}"))
    )
  ),
  server = function(input, output) {
    output$plot <- renderPlot({ hist(runif(input$n)) })
  }
))

现在有一个includeScript函数,如果您的脚本在文件中,它会为您包装HTML函数和标记等。关键部分是tags$script(HTML(paste(lines, collapse = "\r\n"),这基本上就是你在这里所做的。