零剪贴板在第一次点击时不复制

Zeroclipboard not copying on first Click

本文关键字:复制 剪贴板 第一次      更新时间:2023-09-26

我有代码,它在第一次点击时不起作用,但在第二次点击时它正在工作。

$("#btnCopiar").on("click",function(){
        var clipBoardObj = new ZeroClipboard($("#btnCopiar"), {
              moviePath: "../thirdparty/ZeroClipboard.swf"
        });;
        // Create your data here to copy to the clipboard and assign to a variable name data 
         var data =   "DATA IS COMING FROM SERVER OT TEXT INPUT";
                clipBoardObj.on("copy", function (event) {                  
                var clipboard = event.clipboardData;
                  clipboard.setData( "text/plain", data );
        });
    });
<button id="btnCopiar">Copiar</button>

即使我在单击事件之外初始化了剪贴板,它也无法正常工作

我想知道这是否与您编写代码的同步方式有关。

您的行var data = ...意味着变量data正在从对服务器的调用中接收其信息,而该调用仅在该时刻发生。(我正在对你删除的代码做出一些假设,以使问题更加简洁易懂,尽管我可能是错的。这些数据需要一段时间才能到达。但是,紧跟在该行之后,您将在clipBoardObj.on("copy", function(event) {...函数中使用data变量。首次运行该函数时,data尚未到达。但是,在用户再次单击该按钮之前,需要经过一段时间。发生这种情况时,可能有足够的时间返回对服务器的第一次调用,并且data将有一些数据。但是请注意,第二次运行该函数时,它将仅使用第一次调用服务器data,这可能是可接受的,也可能是不可接受的。