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

标签 html r shiny

我正在尝试将外部超链接添加到 tabPabelnavbarMenu 选项卡/下拉列表中的 navbarPage 设置在 Shiny 中(使用 引导页面)。我发现多个问题涉及链接到 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 因为服务器脚本中的 observeEvent 不起作用因为它在另一个窗口中打开)。任何帮助将不胜感激!

最佳答案

在 Shiny 的导航栏页面中添加自定义元素很棘手,但可以使用一些 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")
  )
)

关于html - 将外部超链接添加到 r Shiny 中的 tabPanel 或 navbarMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987238/

相关文章:

error-handling - 突然我得到 "Error : $ operator is invalid for atomic vectors"

R Shiny - 在 Shiny 模块中插入动态 UI

r - 以 Shiny 的方式打印文本

javascript - 获取 Vue 组件计算实例的总数

html - HTML 表格中的跨列

r - 在 R 中的大图中总结邻居属性的快速方法

r - 如何让 R 逐行搜索大型数据集以查找两列之一中是否存在值,然后在数据丢失时返回一个值

html - 如何为多个页面创建标准布局?

android - 在 Android Webview 中加载本地镜像时出现未知的 Chromium 错误 -6

regex - 删除连续的数学运算符,在字符串的开头和结尾