是否可以从脚本中检索 Javascript 变量以在 R 中使用它

Posted

技术标签:

【中文标题】是否可以从脚本中检索 Javascript 变量以在 R 中使用它【英文标题】:Is it possible to retrieve a Javascript variable from a script to use it in R 【发布时间】:2017-09-18 06:18:11 【问题描述】:

我的问题在标题中,我目前正在开发一个闪亮的应用程序,并且由于我正在尝试使用目前尚未在 R 包中翻译的传单插件,因此我正在使用 var js 脚本中的地图(我在 UI.R 中使用此脚本),事实是我希望在服务器部分能够与此地图进行通信,例如使用传单代理在其上添加图块,但是我没有设法让服务器部分与那个 Js var 通信......

也许如果你知道问题出在哪里,你可以帮我很多。!

谢谢。

【问题讨论】:

可能想查看github.com/daattali/shinyjs,或查看Dean 的timevis 代码github.com/daattali/timevis/blob/master/inst/htmlwidgets/… 如果我对 Dean 的 timevis 代码有足够的理解,他正在使用 Js 函数 Shiny.onInputChange() 将 Js var 链接到 R var,问题是当我使用这个时函数,在控制台中我收到一条消息说“Shiny.onInputChange 不是函数”:(( 除非你有连接,否则没有机制可以从 R 控制 JS,通常是 Shiny。在没有连接的情况下,JS 和 R 互不相识。 哦,所以不可能与使用 Js cmd 创建的地图进行交互,我的意思是使用像 leafletproxy 这样的 cmd 来添加多边形和东西? 不,在 Shiny 中,这是可能的,但您的评论 Shiny.onInputChange 不是函数意味着您要么没有 shiny.js,要么您没有等待 Shiny 连接 shiny.rstudio.com/articles/js-events.html 【参考方案1】:

是的,你可以做到。

ui.R

tags$script(src="demo.js")

demo.js

var map = ...
setTimeout(function() 
    Shiny.onInputChange("mapInR", map);
, 10);

现在您可以将 map 的值从 javascript 传递给 R。

server.R 中,您只需检查 javascript 值 ma​​p 为:

server <- function(input, output) 
    useMapInR <- reactive( input$mapInR )

现在,每当 ma​​p 的值在 javascript 中发生变化时,它都会反映在 useMapInR 中。

【讨论】:

以上是关于是否可以从脚本中检索 Javascript 变量以在 R 中使用它的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从 python 中的变量中检索 JSON 路径?

通过 PHP 检索 GET 变量,在同一脚本上发送到 SWF?

从变量 jMeter beanshell 脚本中检索某些值

iOS 从 UIWebView 检索 javascript 变量

使用 Localstorage 将 javascript 变量从一个 html 页面存储和检索到另一个 (DOM)

运行 CGI Python Javascript 以检索 JSON 对象