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

如何用Shiny输入按钮同步控制Shiny与嵌套Quarto网站的主题?

问题:用Shiny开关同时控制Shiny应用与嵌入的Quarto网站主题?

我正在构建一个带文档标签页的Shiny应用,计划使用tags$iframe嵌入渲染完成的Quarto网站。Quarto支持明暗模式切换开关,但目前Shiny应用和嵌入的Quarto网站各有独立的主题切换按钮,用户需要点击两个不同开关才能同步主题,体验不佳:

  • 仅Shiny切换至深色模式的效果:仅Shiny深色模式截图
  • Shiny与Quarto均切换至深色模式的效果:两者均深色模式截图

示例应用效果:示例应用截图

请问能否用Shiny的输入按钮同时控制Shiny应用与Quarto网站的主题?

现有Shiny应用代码

library(shiny)
library(bslib)
library(htmltools)

ui <- page_fillable(

    input_dark_mode(id = "shiny_control", mode = "light"),

    tags$iframe(
      src = "_site/index.html",

      style = "height:86vh"
    )
)

server <- function(input, output, session) {

}

shinyApp(ui, server)

完整应用结构

├── app.R                                       <- Shiny app
├── control_quarto_theme_from_Shiny.Rproj
└── www               
    └── _site                                   <- Rendered Quarto Website files
        ├── about.html
        ├── index.html
        ├── search.json
        ├── site_libs
        │   ├── bootstrap
        │   │   ├── bootstrap-dark.min.css
        │   │   ├── bootstrap-icons.css
        │   │   ├── bootstrap-icons.woff
        │   │   ├── bootstrap.min.css
        │   │   └── bootstrap.min.js
        │   ├── clipboard
        │   │   └── clipboard.min.js
        │   ├── quarto-html
        │   │   ├── anchor.min.js
        │   │   ├── popper.min.js
        │   │   ├── quarto-syntax-highlighting-dark.css
        │   │   ├── quarto-syntax-highlighting.css
        │   │   ├── quarto.js
        │   │   ├── tippy.css
        │   │   └── tippy.umd.min.js
        │   ├── quarto-nav
        │   │   ├── headroom.min.js
        │   │   └── quarto-nav.js
        │   └── quarto-search
        │       ├── autocomplete.umd.js
        │       ├── fuse.min.js
        │       └── quarto-search.js
        └── styles.css

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:15:08