28

我的闪亮应用程序中有一个框,其中有一个按钮包含在闪亮的仪表板框中,如下所示:

shiny::fluidRow(
  shinydashboard::box(title = "Intro Page", "Some description...", 
      shiny::actionButton(inputId='ab1', label="Learn More", icon = icon("th"))
  )
)

我想在按钮中包含一个网络链接,这样当我单击它时,它应该在新选项卡中打开相应的网页。

我知道我可以这样做:

# this does not create a submit button though, it just creates a link.
tags$div(class = "submit",
         tags$a(href = "www.google.com", 
                "Learn More", 
                target="_blank")
)

但是有了 actionButton,有一个不错的按钮,我可以给它添加一个看起来更美观的图标。

在此处输入图像描述

如何在闪亮中添加指向 actionButton 的链接?

4

3 回答 3

43

您可以添加参数

onclick ="location.href='http://google.com';"

到操作按钮并单击它会将您带到当前窗口中的 google.com,或者您可以添加

onclick ="window.open('http://google.com', '_blank')"

您将在新标签页中转到 Google

那是

shiny::fluidRow(
  shinydashboard::box(title = "Intro Page", "Some description...", 
      shiny::actionButton(inputId='ab1', label="Learn More", 
                          icon = icon("th"), 
                          onclick ="window.open('http://google.com', '_blank')")
  )
)
于 2016-06-13T17:45:54.743 回答
11

onclick方法很简单,但它依赖于javascript。更重要的是,如果要动态生成链接会很尴尬。我想在我的应用程序中有一个链接,可以根据用户输入打开特定页面,我发现你可以将链接装扮成按钮。

uiOutput首先我用and处理动态部分renderUI,因为链接只能在服务器部分生成。简单的链接将是

a(h4("Open Link"), target = "_blank", href = paste0("http://www.somesite/", some_link))

只需在 R 中运行这一行,我们就会得到

<a target="_blank" href="http://www.somesite/somelink">
  <h4>Open Link</h4>
</a>

要创建按钮,我们可以查看操作按钮的外观。

> actionButton("download", "Download Selected",
              icon = icon("cloud-download"))
<button id="download" type="button" class="btn btn-default action-button">
  <i class="fa fa-cloud-download"></i>
  Download Selected
</button>

然后我们可以这样做

shiny::a(h4("Open Link", class = "btn btn-default action-button" , 
    style = "fontweight:600"), target = "_blank",
    href = paste0("http://www.somesite/", some_link))

要得到

<a target="_blank" href="http://www.somesite/some_link">
  <h4 class="btn btn-default action-button" style="fontweight:600">Open Link</h4>
</a>

现在我们有了一个看起来像按钮的链接,您可以使用样式参数或自定义 css 进一步自定义其样式。使用 chrome/firefox 开发者工具打开你的应用,修改 css 为你想要的效果,然后将修改后的 css 添加到style.csswww 文件夹中以覆盖默认样式。

如果您查看许多 html 标签函数的输出,您会发现您实际上可以将很多东西组合在一起以获得很多自定义。

于 2017-03-15T19:44:30.220 回答
0

基于@dracodoc 关于动态生成链接的观点,您可以使用它renderUI来达到预期的效果。在下面的例子中,input$open_tab指的是一个通用的actionButton。请注意,您仍然必须在 UI 中包含对以下 renderUI 的引用(即 uiOutput("ui_open_tab"))

output$ui_open_tab <- renderUI({
  req(input$open_tab > 0)
  link <- function_to_build_the_link(a, b, c)
  tags$script(paste0("window.open('", link, "', '_blank')"))
})
于 2020-01-07T20:23:13.570 回答