Teu*_*eun 5 browser tabs r shiny
在我的 Shiny 应用程序中,我想打开几个 URL,并且在打开之间有很短的延迟。下面是一些示例代码,当我在 RStudio 中运行该应用程序时,它们运行良好。
library(shiny)
URLs <- c("http://www.google.com", "http://www.stackoverflow.com")
ui <- fluidPage(
actionButton(
"click",
"Click here to open several browser tabs"
)
)
server <- function(input, output){
observeEvent(input$click, {
for (i in URLs){
browseURL(i)
Sys.sleep(1) #Short delay of 1 second
}
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
然而,当我在shinyapps.io运行这个程序,browseURL()不工作(如提到这里)。
有谁知道如何打开多个浏览器选项卡,并在打开它们之间有很短的延迟,以便在应用程序部署在 Shinyapps.io 上时也能正常工作?使用 R 代码可能还是需要 JavaScript?
这是一个相当古老的问题,但可以回答以防其他人在搜索时偶然发现。
正如您链接的参考资料中所述,我认为您需要使用一些 JS 来完成此任务。下面是使用shinyjs包定义闪亮兼容browseURL函数的示例。一旦我们定义了函数,我们就向 中添加几行ui,然后在serveras 中调用它js$browseURL()。
library(shiny)
library(shinyjs)
# define js function for opening urls in new tab/window
js_code <- "
shinyjs.browseURL = function(url) {
window.open(url,'_blank');
}
"
URLs <- c("http://www.google.com", "http://www.stackoverflow.com")
ui <- fluidPage(
# set up shiny js to be able to call our browseURL function
useShinyjs(),
extendShinyjs(text = js_code, functions = 'browseURL'),
actionButton(
"click",
"Click here to open several browser tabs"
)
)
server <- function(input, output){
observeEvent(input$click, {
for (i in URLs){
js$browseURL(i)
Sys.sleep(1) #Short delay of 1 second
}
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1657 次 |
| 最近记录: |