2016-02-17 2 views
0

У меня есть код, и он не работает при первом нажатии, но при втором нажатии он работает.Zeroclipboard не копируется при первом нажатии

$("#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> 

Даже если я инициализирован буфер вне события щелчка, он не работает

+0

Вы уверены, что объект кнопки существует в DOM, прежде чем добавлять к нему слушателя? – Baumi

+0

ДА Кнопка существует в DOM. –

ответ

0

Интересно, если это имеет отношение с синхронным способом вы написали код.

Ваша строка var data = ... подразумевает, что переменная data получает свою информацию от вызова на сервер, который происходит только в тот момент. (Я делаю некоторые предположения о коде, который вы удалили, чтобы сделать вопрос более кратким и понятным, хотя я мог ошибаться в этом.) Эти данные займут немного времени, чтобы прибыть. Однако сразу после этой строки вы используете переменную data в функции clipBoardObj.on("copy", function(event) {.... При первом запуске этой функции data еще не наступил. Однако некоторое время истечет, прежде чем пользователь нажмет кнопку второй раз. Когда это произойдет, возможно, было достаточно времени для первого вызова сервера, который должен был возвратиться, и data будет иметь некоторые данные. Обратите внимание, однако, что во второй раз, когда вы запустите эту функцию, он будет использовать только data от , сначала вызывающий сервер, что может быть или не быть приемлемым.

Смежные вопросы