根据我收集的信息,如果我想在我的 Shiny App 中包含一些 javascript ,我做了类似的事情:
shinyUI(
fluidPage(
tags$head(
tags$script("if (1 > 0) {1}")
)
)
)
但是,这会在我的浏览器中导致错误,因为如果您执行“查看源代码”,您会看到 Shiny 生成的实际 javascript 是:
<script>if (1 > 0) {1}</script>
>
似乎被错误地转换为 >
。现在,这是因为我没有以正确的方式在 Shiny 中包含 javascript,还是一个错误(或者实际上是一个功能)?更重要的是,有什么办法可以解决这个问题吗?
最佳答案
标签函数执行 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")
,这基本上就是您在这里所做的。
关于javascript - R Shiny 对用户定义的 javascript 的解析不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900505/