使用嵌入式javascript读取cookie到Shiny应用程序
Read in cookie to Shiny application with embedded javascript
我刚开始使用Shiny,并且很喜欢它。但在将javascript集成到我的Shiny应用程序中以添加一些附加功能时,我遇到了一个障碍。希望得到一些帮助。
这里有一个非常基本的Shiny应用程序,我正在使用它来测试用javascript在浏览器cookie中读取的可行性,以便可以在ui中访问它。R.
ui。R代码。
# UI file of getCookie Shiny application.
shinyUI(fluidPage(
titlePanel('Cookie'),
cookie <- tags$head(tags$script(src='readCookie.js')),
print(cookie)
))
"script"标记中包含的javascript函数取自quicksmode.org/js/cookies.html.
function readCookie() {
name = "raisinCookie";
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
以及服务器代码。
# Server file of getCookie Shiny application.
shinyServer(function(input, output){
})
首先,我应该问一下,是否有可能在闪亮的应用程序中读取cookie?第二,我在这里走对了吗?第三,假设我的js代码工作正常,我如何访问js函数在其源代码中返回的值?
任何和所有的帮助都值得赞赏,建设性的批评也是如此。我是新手,所以欢迎任何有助于整合Shiny和JS的建议。
Shinyjs
可能就是这样做的方法。
以下是如何在不使用shinyjs:的情况下读取cookie
# UI file of getCookie Shiny application.
ui <- shinyUI(fluidPage(
titlePanel('Cookie'),
tags$head(tags$script(
HTML('
Shiny.addCustomMessageHandler ("readCookie",function (message) {
var cookie = readCookie(message.name);
Shiny.onInputChange("cookie", cookie);
})
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(";");
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==" ") c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return "No such cookie";
}
')
)),
sidebarPanel(
actionButton('readCookie','Get Cookie'),
textInput('cookieName','Name of cookie: ')
),
mainPanel(
textOutput('cookieVal')
)
))
# Server file of getCookie Shiny application.
server <- shinyServer(function(input, output,session){
observeEvent(input$readCookie,{
session$sendCustomMessage(type="readCookie",
message=list(name=input$cookieName))
})
observeEvent(input$cookie,{
output$cookieVal <- renderPrint({ input$cookie })
})
})
shinyApp(ui=ui, server=server)
运行
document.cookie="username=John Doe";
在浏览器控制台中创建cookie。
这是一个如何使用js.cookies.js库检索所有cookie的示例应用程序
https://beta.rstudioconnect.com/iwallace/cookies/
该代码是上一个答案的一部分如何从Shiny App 中访问浏览器会话/cookie
相关文章:
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 在phonegap应用程序内部重定向不起作用
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 如何在R Shiny应用程序中添加JavaScript来更改CSS文件
- 获取 ImpactStory JavaScript 小部件渲染到 R Shiny 应用程序中的表格单元格
- 使用嵌入式javascript读取cookie到Shiny应用程序
- 我尝试使用R Shiny部署一个应用程序,但网页立即退出,并说诊断信息已记录到我的JavaScript控制台
- 当我在ui中定义了所有元素时,我如何将谷歌地图添加到Shiny应用程序中.R文件