You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R Shiny Conductor Tour中嵌入Javascript?附完整实现示例

在Shiny的Conductor Tour中使用JavaScript实操示例

我当初在开发Shiny应用的Conductor引导 tour 时,踩过一个不小的坑:官方vignette只说明Conductor$new()方法的onComplete、onCancel、onShow、onHide、onStart、onActive这些参数可以填入待执行的JavaScript代码,但完全没有给出任何具体的代码示例。作为对JS不太熟悉的开发者,我当时卡了好长时间才摸清楚门道!

下面我分享一个实操示例,核心功能是通过Conductor Tour的步骤触发JS代码,更新指定的input$变量,这个更新后的值能被Shiny的响应式函数(比如observeEvent())检测到。示例里我只是把input$my_tour_state更新为true或false,但你完全可以根据需求传入数字、字符串等其他类型的值,用这种方式实现通过引导步骤控制部分输入组件的效果。

library(shiny)
library(conductor)

ui <- fluidPage(
  use_conductor(),
  # 创建启动引导的按钮
  actionButton(inputId = "ui_start_tour", label = "Start Tour"),
  # 展示引导状态
  verbatimTextOutput(outputId = "tour_status")
)

server <- function(input, output, session) {
  # 创建Conductor引导实例
  conductor <- Conductor$new()$
    step(
      id = "step1",
      title = "Welcome",
      text = "This is the first step.",
      # 用JS更新响应式变量my_tour_state
      onShow = "Shiny.setInputValue('my_tour_state', true, {priority: 'event'})"
    )$
    step(
      id = "step2",
      title = "Second Step",
      text = "This is the second step.",
      onShow = "Shiny.setInputValue('my_tour_state', false, {priority: 'event'})"
    )

  # 点击按钮启动引导
  observeEvent(eventExpr = input$ui_start_tour, handlerExpr = {
    conductor$init()$start()
  })

  # 实时展示引导状态
  output$tour_status <- renderText({
    paste("Tour status:", input$my_tour_state)
  })
}

shinyApp(ui, server)

内容的提问来源于stack exchange,提问作者Nevil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 09:37:39