我想添加一个按钮,用于复制 Quarto 仪表板中用户的输入或输出。我发现这shiny2clipboard
似乎是一个不错的选择。不幸的是,我尝试运行的代码不会将文本复制到 Quarto 仪表板内的剪贴板。当您运行链接中博客中的示例代码时,它确实有效,但在 Quarto 仪表板中无效。以下是一些可重现的代码:
---
title: "Test"
format: dashboard
server: shiny
---
## Test
```{r}
library(shiny)
library(shinyCopy2clipboard)
```
```{r}
#| title: "Text that needs to copy to clipboard"
# Setup
use_copy()
# Text Input 1
textInput("text", "Enter Your Text")
# Copy Button 1
shinyCopy2clipboard::CopyButton(
"copybtn",
label = "Copy to clipboard",
icon = icon("copy"),
text = "No Text Found"
)
```
```{r}
#| context: server
observe({
req(input$copybtn)
shinyCopy2clipboard::CopyButtonUpdate(session,
id = "copybtn",
label = "Copy to clipboard",
icon = icon("copy"),
text = input$text
)
})
```
输出:
正如您在输出中看到的,我尝试将文本从输入字段复制到剪贴板。这不起作用。所以我想知道是否有人知道如何在 Quarto 仪表板中添加一个按钮来将文本复制到剪贴板?
您可以定义一个
actionButton
具有事件的。在那里,我们从(使用)onclick
读取当前文本,然后使用将其传递到剪贴板:textInput
txt = document.getElementById('text').value;
navigator.clipboard.writeText(txt);