在Shiny Server中,我可以通过session$clientData
获取有关客户端的一些信息。在我目前的项目中,我使用
parseQueryString(session$clientData$url_search)
获取URL中的参数。我希望能够获取网络浏览器信息(Google收集的用于分析的信息类型)。虽然我可能想知道如何在ASP.NET或PHP可能的JS中做到这一点,但我并不清楚如何将我自己的JS编织到一个Shiny应用程序并将结果信息传递给变量。 / p>
如何获取与网页请求一起发送的浏览器信息?
答案 0 :(得分:0)
这是一个使用this answer中的JS函数的小示例。从评论中看来,该解决方案并不完美,但却是一个很好的起点。
library(shiny)
js <- "
// execute the code after the shiny session has started
$(document).on('shiny:sessioninitialized', function(event) {
// browser detection from https://stackoverflow.com/a/5918791/8099834
navigator.sayswho= (function(){
var ua= navigator.userAgent, tem,
M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];
if(/trident/i.test(M[1])){
tem= /\\brv[ :]+(\\d+)/g.exec(ua) || [];
return 'IE '+(tem[1] || '');
}
if(M[1]=== 'Chrome'){
tem= ua.match(/\\b(OPR|Edge)\\/(\\d+)/);
if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
}
M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
if((tem= ua.match(/version\\/(\\d+)/i))!= null) M.splice(1, 1, tem[1]);
return M.join(' ');
})();
// pass browser info from JS to R
Shiny.onInputChange('myBrowser', navigator.sayswho);
});
"
ui <- fluidPage(
tags$head(
tags$script(HTML(js))
),
textOutput("myBrowserOutput")
)
server <- function(input, output, session) {
output$myBrowserOutput <- renderText({
input$myBrowser # contains the value returned by the JS function
})
}
shinyApp(ui, server)