是否可以从脚本中检索 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 值 map 为:
server <- function(input, output)
useMapInR <- reactive( input$mapInR )
现在,每当 map 的值在 javascript 中发生变化时,它都会反映在 useMapInR 中。
【讨论】:
以上是关于是否可以从脚本中检索 Javascript 变量以在 R 中使用它的主要内容,如果未能解决你的问题,请参考以下文章
通过 PHP 检索 GET 变量,在同一脚本上发送到 SWF?
iOS 从 UIWebView 检索 javascript 变量