R 闪亮:将网页链接添加到 actionButton
R shiny: Add weblink to actionButton
我的 shiny 应用程序中有一个框,其中包含一个包含在 shiny dashboard 框内的按钮,如下所示:
shiny::fluidRow(
shinydashboard::box(title = "Intro Page", "Some description...",
shiny::actionButton(inputId='ab1', label="Learn More", icon = icon("th"))
)
)
我想在按钮中包含一个网页link,这样当我点击它时,它应该会在新标签页中打开相应的网页。
我知道我可以这样做:
# 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 中添加 link?
您可以添加参数
onclick ="location.href='http://google.com';"
到操作按钮并单击它将带您到当前 window 中的 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')")
)
)
onclick
方法很简单,但是依赖javascript。更重要的是,如果你想动态生成 link 会很尴尬。我想在我的应用程序中有一个 link 可以根据用户输入打开特定页面,我发现你可以将 link 装扮成一个按钮。
首先我用uiOutput
和renderUI
处理动态部分,因为link只能在服务器部分生成。简单的 link 将是
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>
现在我们有一个看起来像按钮的link,您可以使用样式参数或自定义css进一步自定义其样式。使用chrome/firefox开发者工具打开你的应用,将css修改成你想要的效果,然后将修改后的css添加到www文件夹中的style.css
覆盖默认样式。
如果您查看许多 html 标签函数的输出,您会发现实际上可以将 assemble 很多东西组合在一起以获得很多自定义项。
基于@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')"))
})
我的 shiny 应用程序中有一个框,其中包含一个包含在 shiny dashboard 框内的按钮,如下所示:
shiny::fluidRow(
shinydashboard::box(title = "Intro Page", "Some description...",
shiny::actionButton(inputId='ab1', label="Learn More", icon = icon("th"))
)
)
我想在按钮中包含一个网页link,这样当我点击它时,它应该会在新标签页中打开相应的网页。
我知道我可以这样做:
# 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 中添加 link?
您可以添加参数
onclick ="location.href='http://google.com';"
到操作按钮并单击它将带您到当前 window 中的 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')")
)
)
onclick
方法很简单,但是依赖javascript。更重要的是,如果你想动态生成 link 会很尴尬。我想在我的应用程序中有一个 link 可以根据用户输入打开特定页面,我发现你可以将 link 装扮成一个按钮。
首先我用uiOutput
和renderUI
处理动态部分,因为link只能在服务器部分生成。简单的 link 将是
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>
现在我们有一个看起来像按钮的link,您可以使用样式参数或自定义css进一步自定义其样式。使用chrome/firefox开发者工具打开你的应用,将css修改成你想要的效果,然后将修改后的css添加到www文件夹中的style.css
覆盖默认样式。
如果您查看许多 html 标签函数的输出,您会发现实际上可以将 assemble 很多东西组合在一起以获得很多自定义项。
基于@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')"))
})