javascript - R Shiny 对用户定义的 javascript 的解析不正确?

标签 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>

> 似乎被错误地转换为 >。现在,这是因为我没有以正确的方式在 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/

相关文章:

在 R 中创建数据帧的再现函数 - 可再现代码

javascript - Shiny:如何在UI中直接使用Server中定义的列表

r - Shiny 的本地部署错误 : input string 1 is invalid UTF-8

r - magento 2 休息 api : get cart items with images

javascript - 淡入/淡出 jquery 列表

javascript - 选择 INTO 数组或对象

javascript - 如何在React-router中找到Popup状态和刷新状态?

r - findInterval() 在 data.table R 中具有不同的间隔

shiny - R Shiny - R Shiny 服务器开源的 WebSEAL 身份验证

javascript - 如何限制用户触摸手机上的chrome标题栏和3个垂直点