如何在单击操作按钮时在R中打开新浏览器?

时间:2016-08-23 05:34:26

标签: r shiny

如果在单击操作按钮时如何在R中打开新浏览器?这个新浏览器应显示在fluidpage内创建和定义的表单:

例如

observeEvent (input$button1, {
  output$view <- renderUI({isolate({
      div(id="view1",
     fluidPage(shinyjs::useShinyjs(),
         fluidRow(column(3,
         textInput("mrdno",label = "MRD NO:",value="111")),
    column(3,
    textInput("namevpmodify",label = "NAME",value="AAA") )
     )))
})})})

我希望显示div id="view1"中定义的表单,以便在单击按钮按钮1时显示在另一个浏览器窗口中。

1 个答案:

答案 0 :(得分:0)

我不认为你可以创建一个没有第二个R实例的单独窗口(即第二个Shiny应用程序)。您可以轻松打开一个包含任意HTML的新窗口,但它不会像Shiny应用程序那样链接到服务器中的R,因此您无法包含textInput,但是可能是一种让新窗口与服务器通信的方法(我怀疑它)。请参阅下面的示例,了解如何使用任意HTML创建新窗口:

library(shiny)
runApp(
  list(
    ui = fluidPage(
      tags$script(
        "Shiny.addCustomMessageHandler('new-page', function(HTML) { 
          var w=window.open();
          $(w.document.body).html(HTML);
        });"  
      ),
      textInput("html","Enter arbitrary HTML"),
      actionButton("btn","Press Me to render HTML in new window")
    ),
    server = function(input, output, session) {
      observeEvent(input$btn,{
        session$sendCustomMessage("new-page",list(
          HTML(
              input$html
            )
          )
        )
      })
    }
  )
)

您可能对shinyBS软件包创建模态窗口的能力感兴趣。所以你想在UI中想要一些东西,比如

bsModal("view1","pickAname","button1",  fluidRow(column(3,
         textInput("mrdno",label = "MRD NO:",value="111")),
    column(3,
    textInput("namevpmodify",label = "NAME",value="AAA") )