R语言 如何禁用一个actionbutton直到嵌入式视频在闪亮完成

atmip9wb  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(117)

我正在构建一个应用程序,其中包括嵌入的视频和音频文件。我有一个动作按钮,让用户向前导航,但我需要他们灰色,直到嵌入的视频/音频完成。
对于需要用户输入的东西,我发现使用enable/disable/toggle和shinyjs就可以很容易地做到这一点,但我找不到一种方法来处理嵌入式文件。我想我可以用observeEvent做一些事情,但我不知道观察到的事件是什么-视频整理是否在某个地方有一个唯一的隐藏id?

library(shiny)
ui <- fluidPage(
  HTML('<iframe width="560" height="315" src="https://www.youtube.com/embed/Hrc1WrC8ihE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'), #random youtube video without copyright
  br(),
  br(),
  actionButton("test", "test") #need this disabled out until the video is complete
)
server <- function(input, output, session) {
}
shinyApp(ui, server)

这可能也是可以用javascript排序的东西,但我没有这方面的经验。
任何帮助将不胜感激!

  • 编辑 *

这个例子中的视频嵌入与我的代码中的不同,只是为了保持它的可复制性,我保存了我嵌入的mp4文件,而不是youtube链接。

velaa5lx

velaa5lx1#

一个iframe有一个load事件。这可以工作,但视频加载很快,所以不容易看到:

library(shiny)

js <- "
$(document).ready(function() {
  $('#thebutton').prop('disabled', true);
  $('iframe').on('load', function() {
    $('#thebutton').prop('disabled', false);
  });
});
"

ui <- fluidPage(
  tags$head(
    tags$script(HTML(js))
  ),
  HTML('<iframe width="560" height="315" src="https://www.youtube.com/embed/Hrc1WrC8ihE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'), #random youtube video without copyright
  br(), br(),
  actionButton("thebutton", "test") 
)

server <- function(input, output, session) { }

shinyApp(ui, server)

相关问题