gpt4 book ai didi

r - Shiny 打开多个浏览器标签

转载 作者:行者123 更新时间:2023-12-04 17:15:22 25 4
gpt4 key购买 nike

在我的 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)

但是,当我在 Shinyapps.io 上运行这个应用程序时, browseURL()不起作用(如前所述 here )。

有谁知道如何打开多个浏览器选项卡,并在打开它们之间有很短的延迟,以便在应用程序部署在 Shinyapps.io 上时也能正常工作?
使用 R 代码可能还是需要 JavaScript?

最佳答案

这是一个相当古老的问题,但可以回答以防其他人在搜索时偶然发现。

正如您链接的引用文献中所述,我认为您需要使用一些 JS 来完成此任务。以下是使用 shinyjs 的示例定义 Shiny 兼容的包 browseURL功能。一旦我们定义了函数,我们就在 ui 中添加几行然后在 server 中调用它如 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)

关于r - Shiny 打开多个浏览器标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41426016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com