На самом деле, вы должны использовать Document.execCommand() (как вы это делали) ВМЕСТЕ (так круто) JavaScript Selection API.
API выбора позволяет вам программно сделать выбор текста из любого элемента HTML на странице и работает точно так же, как нажатие CTRL + C на клавиатуре. Полезно быстро захватывать URL-адреса, длинные тексты, ключи SSH, одним щелчком мыши.
Вы можете попробовать что-то вроде этого:
var button = document.getElementById("yourButtonId");
var content = document.getElementById("yourContentElement");
button.addEventListener("click", function() {
// Define range and selection.
var range = document.createRange();
var selection = window.getSelection();
// Clear selection from any previous data.
selection.removeAllRanges();
range.selectNodeContents(content);
selection.addRange(range);
// Copy to clipboard.
document.execCommand('copy');
}, false);
Edit: Одно из преимуществ этого метода является то, что вы можете управлять содержимым в буфере обмена после того, как он был скопирован (спасаясь код, форматирование чисел или дат, верхний регистр , строчные буквы, изменение тегов HTML и т. д.).
Возможный дубликат [Как скопировать в буфер обмена в JavaScript?] (Http://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript) –