如何防止将图像添加到ShinyDashboard标头的代码出现在浏览器选项卡中?

时间:2019-01-11 12:42:08

标签: r shiny shinydashboard

我添加了代码以在我正在处理的Shinydashboard应用程序的标题中显示徽标。图片显示了我希望的样子,但是代码却出现在Internet浏览器的工作表标签中,这显然不理想,有没有办法防止这种情况发生?

Example Image

我使用的相关代码行是:

dashboardHeader(title = tags$a(tags$img(src = "/MainLogo.png", align = "left")))

下面提供了一个完整的工作示例(图像文件位于app项目文件夹中的“ www”文件夹中)。

## app.R ##
library(shiny)
library(shinydashboard)

ui <- dashboardPage(

  dashboardHeader(title = tags$a(tags$img(src = "/MainLogo.png", align = "left"))),

  dashboardSidebar(),
  dashboardBody(
    # Boxes need to be put in a row (or column)
    fluidRow(
      box(plotOutput("plot1", height = 250)),

      box(
        title = "Controls",
        sliderInput("slider", "Number of observations:", 1, 100, 50)
      )
    )
  )
)

server <- function(input, output) {
  set.seed(122)
  histdata <- rnorm(500)

  output$plot1 <- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })
}

shinyApp(ui, server)

3 个答案:

答案 0 :(得分:1)

我之前也遇到过同样的问题,希望对您有用。我不得不回顾一下以前的应用程序,它是在ui.R的边栏环境下,您可能需要尝试放置它的位置,但是它应该可以工作。

HTML('<script> document.title = "Internet Tab Name"; </script>')

答案 1 :(得分:0)

进行更多搜索后,我发现一种解决方案是将浏览器选项卡中所需的标题添加到代码的dashboardPage部分中。

ui <- dashboardPage(
  title = "My Demo App",

因此,该示例的完整代码为:

## app.R ##
library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  title = "My Demo App",
  dashboardHeader(title = tags$a(tags$img(src = "/MainLogo.png", align = "left"))),

  dashboardSidebar(),
  dashboardBody(
    # Boxes need to be put in a row (or column)
    fluidRow(
      box(plotOutput("plot1", height = 250)),

      box(
        title = "Controls",
        sliderInput("slider", "Number of observations:", 1, 100, 50)
      )
    )
  )
)

server <- function(input, output) {
  set.seed(122)
  histdata <- rnorm(500)

  output$plot1 <- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })
}

shinyApp(ui, server)

答案 2 :(得分:0)

另一个选择是使用可以编辑或修改标题的JavaScript。因此,为了将JS脚本插入Shiny应用程序,可以使用tags$head(tags$script(...)),这意味着JavaScript仅会出现在文档的<head>中。

所以下面的部分

  tags$head(tags$script(
          "  $(document).ready(function() {
            document.title = 'My Demo App';
        });"
        )), 

可以插入dashboardBody()内。