我想从 JavaScript 获取屏幕分辨率,存储在 Shiny Server 上的 GetScreenWidth
变量中。
我试过引用:
- Receiving data from .js in server.R shiny
- 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
})
})
它将通过 verbatimTextOutput
返回 NULL
。
我该如何修改代码?谢谢!
最佳答案
问题是您在初始化 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)
})
}
))
关于javascript - 如何从 R Shiny 中的 JavaScript 获取屏幕分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33250075/