【问题标题】:trigger javascript from onclick in Dash从 Dash 中的 onclick 触发 javascript
【发布时间】:2020-05-01 09:24:26
【问题描述】:

我有一个 Python Dash 应用程序正在运行,有几个回调和一个漂亮的图表。我接下来需要的是有一个按钮,用于将一些结果以 excel 格式复制到剪贴板(非常具体,是的)。我想我需要实现一个由 button onclick 触发的 javascript 函数,但我不知道如何让 Python 应用程序调用 javascript。有人可以帮我解决这个问题吗? :)

类似这样的:

function copy_to_cliboard() {
  var copyText = document.getElementById("text_input");

  copyText.select();
  copyText.setSelectionRange(0, 99999);

  document.execCommand("copy");

  alert("Copied the text: " + copyText.value);
}

非常感谢!

【问题讨论】:

标签: javascript python-3.x plotly-dash


【解决方案1】:

如果有人遇到同样的挑战,下面是我的解决方案。

app.clientside_callback(
    """
    function placeholder(n_clicks, data) {
        window.data_to_copy = data.data;
        var copyText = document.getElementById("text_input");
        copyText.select();
        copyText.setSelectionRange(0, 99999);
        document.execCommand("copy");
    }

    // Overwrite what is being copied to the clipboard.
    document.addEventListener('copy', function(e){
      // e.clipboardData is initially empty, but we can set it to the
      // data that we want copied onto the clipboard.
      e.clipboardData.setData('text/plain', window.data_to_copy);

      // This is necessary to prevent the current document selection from
      // being written to the clipboard.
      e.preventDefault();
    });
    """,
    [Output("copy_output", "children")],
    [Input("copy_button", "n_clicks")],
    [State("excel_output", "data")]
)

【讨论】:

【解决方案2】:

您必须为此使用套接字,使用套接字服务器可以触发前端。推送通知也用于向前端发送消息,但在您的情况下,套接字是最好的解决方案。请参考以下答案。希望对您有所帮助。

https://stackoverflow.com/a/52792016/11035114

【讨论】:

    猜你喜欢
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    相关资源
    最近更新 更多