如何在 R Shiny 中的 iframe 顶部显示加载动画一段设定的时间?
我正在一个闪亮的应用程序的 iframe 中加载一个大的(~18 mb)html 文件。浏览器需要几秒钟才能完全加载 html 文件。我能找到的所有加载动画(例如,shinycssloaders、waiter、像这样的自定义加载动画)在 iframe 开始加载时停止显示动画,但由于我从文件加载,iframe 几乎立即开始加载,但它需要几秒钟才能完成加载。我想在 iframe 顶部显示一些内容几秒钟,以向用户表明 iframe(可能)尚未完成加载。
这是一个闪亮的应用程序,显示一个没有任何加载/等待动画的 iframe。
library(shiny)
ui <- fluidPage(
shiny::fluidRow(
shinycssloaders::withSpinner(
shiny::uiOutput(outputId = "iframe"),
)
)
)
server <- function(input, output, session) {
output$iframe <- shiny::renderUI({
tags$iframe(src = "https://example.com/", style = 'width:90vw;height:90vh;')
})
}
shinyApp(ui, server)
您可以使用CSS 动画。
将以下 CSS 代码保存在位于应用程序www子文件夹中的文件myloader.css中。
我们需要 JavaScript 在动画完成后删除它:
这是闪亮的应用程序:
这是对Stephane Laurent 答案的一个糟糕的修改,允许在重新加载 iframe 时重新加载加载动画。
CSS 代码保存在位于应用程序www子文件夹中的myloader.css文件中:
1487.gif从https://icons8.com/preloaders/下载并保存在www目录中。
闪亮的应用程序:
最终结果:
