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

Shiny中如何实现popify弹窗点击显示后移开鼠标自动关闭

实现方案

可以通过添加少量自定义JavaScript的方式实现需求,完全保留点击图标才显示弹窗的规则,同时实现鼠标移开图标后自动关闭弹窗,修改量极小。

核心修改点

  • 给信息图标添加唯一ID,方便JavaScript定位元素
  • 新增鼠标移出事件监听,触发时调用Bootstrap原生方法关闭弹窗

完整可运行代码

library(shiny)
library(shinyBS)

ui <- fluidPage(
  titlePanel("Old Faithful Geyser Data"),
  # 自定义JS实现鼠标移出关闭弹窗
  tags$script(HTML("
    $(document).on('mouseleave', '#info-icon', function() {
      $(this).popover('hide');
    });
  ")),
  sidebarLayout(
    sidebarPanel(
      sliderInput("bins",
                  "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)
    ),
    
    mainPanel(
      htmlOutput("pop")
    )
  )
)

server <- function(input, output, session) {
  output$pop <- renderUI({
    h4(style="margin-top:10px;display:initial;","topic",
       popify(
         el = icon(id = "info-icon", name = "info-circle", lib = "font-awesome"), 
         title = "",
         content = "aims",
         placement="right",
         trigger = "click",
         options = list(container = "body")
       )
    )
  })
}

shinyApp(ui = ui, server = server)

实现逻辑说明

shinyBS的popify本质是对Bootstrap Popover组件的封装,我们直接调用Bootstrap提供的popover('hide')方法即可手动关闭弹窗。通过监听图标的鼠标移出事件触发该方法,即可在不改动原有点击显示逻辑的前提下,实现鼠标移开自动关闭弹窗的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:45:02