Shiny应用按钮点击跳转URL如何改为在新标签或窗口打开?
解决Shiny应用按钮点击在新标签页打开URL的问题
只需要修改自定义消息处理器中的JavaScript代码,将window.location替换为window.open并指定_blank参数,即可实现点击按钮后在新标签页打开目标URL。修改后的完整代码如下:
library(shiny) myjs <- "Shiny.addCustomMessageHandler('mymessage', function(message) { // 使用window.open并指定_blank参数打开新标签页 window.open(message, '_blank'); });" ui <- fluidPage( tags$head(tags$script(myjs)), actionButton("button", "Click me") ) server <- function(input, output, session) { observeEvent(input$button,{ url <- "https://stackoverflow.com/" session$sendCustomMessage("mymessage", url) }) } shinyApp(ui, server)
关键说明:
window.open(message, '_blank')中的_blank参数强制浏览器在新标签页打开链接,若省略该参数,部分浏览器可能会在已有标签页中打开(取决于浏览器设置)。- 由于该操作是通过用户主动点击按钮触发的,大部分浏览器不会拦截此弹窗;若遇到拦截情况,只需引导用户允许当前站点的弹窗权限即可。
- 如需自定义新窗口的大小、位置等属性,可以添加第三个参数,例如:
window.open(message, '_blank', 'width=800,height=600,top=100,left=100')。
内容的提问来源于stack exchange,提问作者Parinn
相关产品推荐
相关产品推荐

