gpt4 book ai didi

javascript - 如何重定向到 Shiny 的动态URL?

转载 作者:行者123 更新时间:2023-12-01 00:40:30 25 4
gpt4 key购买 nike

在一个新的应用程序中,当用户单击图中的某个点时,我想将用户重定向到另一个 URL。重定向本身基于 https://stackoverflow.com/a/47158654/590437 中提供的解决方案进行工作。但是,我不清楚如何将动态属性(在服务器端计算)合并到 URL 中。

示例:

library(shiny)
library(ggplot2)

jscode <- "Shiny.addCustomMessageHandler('mymessage', function(message) {window.location = 'http://www.google.com';});"

ui <- fluidPage(
tags$head(tags$script(jscode)),
plotOutput("scatter", click = "plot_click")
)

server <- function(input, output, session) {

observeEvent(input$plot_click, {
selectedTiles = nearPoints(iris, input$plot_click, threshold = 100, maxpoints = 1)

if(nrow(selectedTiles)>0){
# todo how to include the species in the redirect URL?
# e.g. https://www.google.com/?q=versicolor
session$sendCustomMessage("mymessage", "mymessage")
}
})

output$scatter = renderPlot({
ggplot(iris, aes(Sepal.Width, Petal.Width)) + geom_point()
})
}

shinyApp(ui,server)

因此,当使用 sendCustomMessage 触发重定向来运行 java 脚本时,如何包含动态查询参数(在本例中为选定的物种)?

最佳答案

您只需将参数传递到 mymessage 函数中,如下所示:

library(shiny)
library(ggplot2)

jscode <- "Shiny.addCustomMessageHandler('mymessage', function(message) { window.location = message;});"

ui <- fluidPage(
tags$head(tags$script(jscode)),
plotOutput("scatter", click = "plot_click")
)

server <- function(input, output, session) {

observeEvent(input$plot_click, {
selectedTiles = nearPoints(iris, input$plot_click, threshold = 100, maxpoints = 1)

if(nrow(selectedTiles)>0){
# todo how to include the species in the redirect URL?
url <- "https://stackoverflow.com/questions/57755830/how-to-redirect-to-a-dynamic-url-in-shiny/57756048#57756048"
session$sendCustomMessage("mymessage", url)
}
})

output$scatter = renderPlot({
ggplot(iris, aes(Sepal.Width, Petal.Width)) + geom_point()
})
}

shinyApp(ui,server)

关于javascript - 如何重定向到 Shiny 的动态URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57755830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com