将外部超链接添加到r Shiny中的tabPanel或navbarMenu

时间:2019-05-04 22:11:48

标签: html r shiny

我正在尝试使用Shiny的tabPabel设置中的navbarMenunavbarPage选项卡/下拉列表中添加外部超链接(使用bootstrapPage)。我发现了多个问题,这些问题涉及到链接到Shiny应用程序中的另一个选项卡,但是我想专门链接到另一个网页,而无需打开新的浏览器窗口。

我发现以下问题可以解决:

How to direct to another web page after clicking tabPanel in Shiny App

Open URL by tabPanel in Shiny

第二个问题是我想做什么?但是,当我使用以下方法完成此操作时,它会添加一个“幻影”标签:

tabPanel(a("Open Sales Gsheet", href="http://google.com", target="_blank"))

以下是我正在使用的Shiny应用设置的一些示例代码:

library(shiny); library(shinythemes)

ui <- bootstrapPage("", 
                navbarPage(
                  id = "navbar", 
                  theme = shinytheme("yeti"),
                  title = a("Home", href = "https://google.com", style = "color:white;"),  ## page title with hyperlink and browser tab title (works as intended)

                  tabPanel(title = HTML("Panel_1</a></li><li><a href='http://google.com' target='_blank'>test")),  ## tabPanel hyperlink test (adds "phantom" tab)

                  navbarMenu(title = "Test Menu", 
                             tabPanel(title = a("Open Sales Gsheet", href="http://google.com", target="_blank"))   ## navbarMenu hyperlink test (adds "phantom" option)
                             )
                  )
            )

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

  ## empty server

  }

shinyApp(ui, server)

以下是“幻影”标签问题的屏幕截图:

https://i.imgur.com/tIYbhzT.png

如您所见,tabPanelnavbarMenu选项卡/下拉列表均添加了其他“幻影”选项卡。我上面发布的第一个问题显示了一个涉及编辑html代码(或R中生成的列表)的答案...但是我无法弄清楚如何使用tabPanelnavbarMenu来完成此操作。宾语。

我只希望它看起来像一个普通的navbarPage下拉列表,其中tabPanel和navbarMenu选择链接到外部站点(在同一浏览器窗口-browseURL中,因为服务器脚本中的watchEvent无法打开,因为它打开了)在另一个窗口中)。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

在闪亮的导航栏页面中添加自定义元素很棘手,但是可以使用一些JavaScript来完成。以下代码应将您的链接添加到导航栏中的下拉菜单。将其另存为.js文件到应用程序的基本目录中,然后将该脚本包含在ui函数中。

navAppend.js在您应用的基本目录中:

$(document).ready(function() {
  $(".navbar .container-fluid .navbar-nav .dropdown .dropdown-menu").append('<li><a href="https://google.com" target="_blank">Open Sales Gsheet</a></li>');
});

在您的ui中:

ui <- tagList(
  tags$head(includeScript("navAppend.js")),
  navbarPage(
    id = "navbar", 
    theme = shinytheme("yeti"),
    title = a("Home", href = "https://google.com", style = "color:white;"),  ## page title with hyperlink and browser tab title (works as intended)

    # nav menu the link will be added to
    navbarMenu(title = "Test Menu")
  )
)