我尝试在我的R Shiny仪表板应用程序中将现有的HTML文件显示为内容 - 类似于这个问题。我的HTML文件还包含指向其他本地HTML文件的链接,我希望能够单击并关注。
我设置了最小示例,如下所示。如果我单击main.html中的链接,我希望显示target.html。目前,当我单击 main.html 中的链接时,出现">未找到"错误。
任何帮助都非常感谢。
谢谢 乔纳森
主.html
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>Head</title></head>
<body><a href="target.html">target</a></body>
</html>
目标.html
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>Head</title></head>
<body><a href="main.html">back to main</a></body>
</html>
用户界面。R
library(shinydashboard)
dashboardPage(
dashboardHeader(title = "HTML Main"),
dashboardSidebar(
sidebarMenu(
menuItem("Main", tabName = "main")
)
),
dashboardBody(
tabItems(
tabItem(tabName = "main",
fluidRow(box(width=NULL, htmlOutput("html_main")))
)
)
)
)
服务器。R
library(shiny)
shinyServer(function(input, output) {
getPageMain<-function() {
return(includeHTML("C:/sub_link/main.html"))
}
output$html_main<-renderUI({getPageMain()})
})
您可以使用 iframe。这需要在 a 标签中设置target = "_self"
。html 文件必须位于 www 子文件夹中。
ui <- dashboardPage(
dashboardHeader(title = "HTML Main"),
dashboardSidebar(
sidebarMenu(
menuItem("Main", tabName = "main")
)
),
dashboardBody(
tabItems(
tabItem(tabName = "main",
tags$iframe(src = "main.html")
)
)
)
)
server <- function(input, output) {}
shinyApp(ui, server)
主.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Head</title>
</head>
<body>
<a href="target.html" target="_self">target</a>
</body>
</html>
目标.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Head</title>
</head>
<body>
<a href="main.html" target="_self">back to main</a>
</body>
</html>