在R中构建Shiny应用程序时遇到此问题。在应用程序中,使用操作按钮触发隐藏的下载按钮。这将允许我观察操作按钮事件,对该事件作出反应,然后触发下载过程。设置显示属性为none删除href目标
但是,当我设置的下载按钮的隐藏按钮,它一般针对类似"session/1c47..ef8/download/download_show?w="
的href目标的显示属性,失踪了。
下面是一个较小的Shiny应用程序,它再现了这个问题。
shinyApp(
ui = fluidPage(
tags$head(
tags$style(HTML(".hide { display: none; }")),
tags$script(HTML('
Shiny.addCustomMessageHandler("trigger-button", function(message) {
document.getElementById(message.button_id).click();
});
'))
),
div(
class = "disable",
downloadButton("download_shown", "Shown"),
div(
class = "hide",
downloadButton("download_hidden", "Hidden")
)
),
br(),
actionButton("trigger_shown", "I can trigger the visible button!"),
actionButton("trigger_hidden", "I can trigger the hidden button!")
),
server = function(input, output, session) {
output$download_shown <- downloadHandler(
filename = "sample.txt",
content = function(file) {
cat("I'm visible!\n", file = file)
}
)
output$download_hidden <- downloadHandler(
filename = "sample2.txt",
content = function(file) {
cat("I'm hidden!\n", file = file)
}
)
observeEvent(input$trigger_shown, {
session$sendCustomMessage(
"trigger-button",
list(button_id = "download_shown")
)
})
observeEvent(input$trigger_hidden, {
session$sendCustomMessage(
"trigger-button",
list(button_id = "download_hidden")
)
})
}
)
在应用中,两个操作按钮触发其相应的下载按钮。触发可见的下载按钮会导致文件sample.txt
的正确下载。触发隐藏的下载按钮会导致下载HTML文件(网页),而不是文件sample2.txt
。此外,如果您检查生成的HTML,则可以看到download_hidden
下载按钮具有不带目标的href属性。
- HTML规范中是否有任何规定隐藏元素的东西 不能有href目标?这似乎不太可能,我的搜索没有任何一个或任何事情证实了这一点。
- 内部确实闪亮忽略隐藏的元素?
- 与此同时,没有人有没有使用
hidden
或display: none;
隐藏按钮 的建议吗?
在此先感谢您。