如何从 R Shiny 中的 JavaScript 获取屏幕分辨率?

How to get screen resolution from JavaScript in R Shiny?

我想从 JavaScript 获取屏幕分辨率,存储在 Shiny Server 上的 GetScreenWidth 变量中。

我试过参考:

  1. https://ryouready.wordpress.com/2013/11/20/sending-data-from-client-to-server-and-back-using-shiny/

所以我有:

ui.R

shinyUI(
  bootstrapPage(

    verbatimTextOutput("results")
    ,tags$script('
        var jsWidth = screen.width;
        Shiny.onInputChange("GetScreenWidth",jsWidth);
    ')
   )
 )

server.R

 shinyServer(function(input,output){

     output$results=renderPrint({
     input$GetScreenWidth
   })

 })

return NULL verbatimTextOutput

我该如何修改代码?谢谢!

问题是您 运行 初始化 Shiny 之前的 JavaScript 代码。您可以使用新功能来告诉您 shiny 何时准备就绪,这里是示例代码

jscode <-
'$(document).on("shiny:connected", function(e) {
  var jsWidth = screen.width;
  Shiny.onInputChange("GetScreenWidth",jsWidth);
});
'

library(shiny)
runApp(shinyApp(
  ui = fluidPage(
    tags$script(jscode)
  ),
  server = function(input, output, session) {
    observe({
      cat(input$GetScreenWidth)
    })
  }
))