我正在尝试使用Shiny的tabPabel
设置中的navbarMenu
和navbarPage
选项卡/下拉列表中添加外部超链接(使用bootstrapPage
)。我发现了多个问题,这些问题涉及到链接到Shiny应用程序中的另一个选项卡,但是我想专门链接到另一个网页,而无需打开新的浏览器窗口。
我发现以下问题可以解决:
How to direct to another web page after clicking tabPanel in Shiny App
第二个问题是我想做什么?但是,当我使用以下方法完成此操作时,它会添加一个“幻影”标签:
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
如您所见,tabPanel
和navbarMenu
选项卡/下拉列表均添加了其他“幻影”选项卡。我上面发布的第一个问题显示了一个涉及编辑html代码(或R中生成的列表)的答案...但是我无法弄清楚如何使用tabPanel
或navbarMenu
来完成此操作。宾语。
我只希望它看起来像一个普通的navbarPage下拉列表,其中tabPanel和navbarMenu选择链接到外部站点(在同一浏览器窗口-browseURL
中,因为服务器脚本中的watchEvent无法打开,因为它打开了)在另一个窗口中)。任何帮助将不胜感激!
答案 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")
)
)