【发布时间】:2021-08-18 17:59:36
【问题描述】:
我需要在带有 Shiny 运行时的 R Markdown 应用程序中自动重定向到不同的链接。我尝试了几种方法,但都不适合我。 (它们在 Shiny 中运行良好,但在 R Markdown 中却不行)。
如何让我的 R Markdown 应用将用户重定向到另一个页面?
这是我尝试过的事情的清单。
这个解决方案:Redirect in Shiny app 在 Shiny 中工作,但我无法在 R Markdown 中工作。
This solution 再次在 Shiny 中工作,但在 R Markdown 中失败:
---
title: "Untitled"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
runtime: shiny
---
```{r redirect}
singleton(tags$head(tags$script('window.location.replace("https://stackoverflow.com");')))
```
我还尝试了基于How do I redirect to another webpage? 的shinyjs 方法,该方法在Shiny 中运行良好,但在R Markdown 中则不行:
```{r redirect_lab}
library(shinyjs)
useShinyjs(rmd = TRUE)
##both fail in Rmd
runjs('window.location.replace("https://stackoverflow.com");')
# runjs('window.location.href = "https://stackoverflow.com";')
```
我还尝试了一种 hacky 方法,它创建一个链接,将其绑定到一个按钮,然后使用 shinyjs 以编程方式单击该按钮:
How to select a specific tab in R Markdown?
```{r redirect_lab}
library(shinyjs)
useShinyjs(rmd = TRUE)
tags$a(href = "https://stackoverflow.com",
# set this button to `display: none;` but *not* to `hidden`
shiny::actionButton("btn2", "redirect"
# , style = "display: none"
)
)
click("btn2")
```
奇怪的是,当 R Markdown 页面加载时,它不会自动重定向。但是如果我用鼠标手动单击按钮,那么它将重定向到链接。但我很困惑为什么这不能以编程方式工作。
【问题讨论】:
-
您的解决方案不起作用的原因是因为您的
click调用发生在反应性闪亮环境之外,并且不能保证在页面加载后发生(因此按钮可能不存在时该函数被调用)。在纯 JavaScript 页面中,这是由$(document).ready({})回调处理的。
标签: r shiny r-markdown