Продолжая предложение Марка здесь Я сейчас использую uiOutput
и renderUI
.
Приведенный ниже код отображает анимированный GIF («анион»). Когда кнопка «Снова» нажата, он сбрасывает Chrome с Javascript способами, которые я до конца не понимаю, а затем моделирует мою большую программу, перезаписывая оригинальный анимированный GIF другим анимированным GIF («anitwo»).
Однако «anitwo» не отображается, «anione» отображается. Я могу просмотреть локальный файл и увидеть, что он был написан, и просмотреть его успешно, открыв его в Chrome. Как просмотреть другой файл с тем же именем?
Я понимаю, что я непоследовательно использую «www / tmp / ani.gif» и «tmp / ani.gif» и понимаю, что блестящий поиск файлов в «www». Тем не менее, без этих несоответствий я получаю файл not found ошибки.
ani.gif и ani2.gif здесь .
library(shiny)
library(shinyjs)
library(magick)
jsCode <- '
shinyjs.reset_anim = function() {
var div_elem = document.getElementById("anim_plot");
var img_elem = div_elem.getElementsByTagName("img")[0];
var src_value = img_elem.getAttribute("src");
img_elem.setAttribute("src", "");
img_elem.setAttribute("src", src_value);
}
'
# Define UI ----
ui <- fluidPage(useShinyjs(),
extendShinyjs(text = jsCode),
uiOutput('anim_plot'),
fluidRow(
column(3,
actionButton("do_again", "Again")
)
)
)
# Define server logic ----
server <- function(input, output) {
output$anim_plot <- renderUI({
img(src = 'tmp/ani.gif',
width = '900')
})
observeEvent(input$do_again, {
print("Again")
js$reset_anim()
# When Again clicked, simulate the creation of a new animated gif by reading in a file and
# over writing the old one. Try displaying this new animated gif.
img2 <- image_read("www/tmp/ani2.gif")
image_write(img2, path = "www/tmp/ani.gif")
output$anim_plot <- renderUI({
img(src = 'tmp/ani.gif',
width = '900')
})
})
}
shinyApp(ui = ui, server = server)