【发布时间】:2021-06-14 23:20:19
【问题描述】:
我想在服务器(而不是 UI)中运行 JS。我知道我可以使用 runjs 函数通过 shinyjs 包做到这一点,但我想知道如何通过本机闪亮包做到这一点。我通过session$sendCustomMessage() 和Shiny.addCustomMessageHandler( ) 尝试过,但它不起作用。
我的尝试
library(shiny)
library(shinydashboard)
jscode <- "
window.close();
"
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
actionButton("close", "Close app"),
tags$script(
"Shiny.addCustomMessageHandler('closeWindow', function(data) {
data.message
});"
)
)
)
server = function(input, output, session) {
observeEvent(input$close, {
session$sendCustomMessage(type = "closeWindow", list(message = jscode))
})
}
runApp(list(ui = ui, server = server), launch.browser =T)
这适用于 shinyjs
library(shiny)
library(shinydashboard)
library(shinyjs)
jscode <- "
window.close();
"
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
shinyjs::useShinyjs(),
actionButton("close", "Close app")
)
)
server = function(input, output, session) {
observeEvent(input$close, {
runjs(jscode)
})
}
runApp(list(ui = ui, server = server), launch.browser =T)
【问题讨论】:
-
这个JS代码关闭窗口。窗口位于 UI 中。这个 JS 代码应该在“UI”中运行