Я сделал вот так:
var copyBtn = document.querySelector('.copyBtn');
copyBtn.addEventListener('click', function(event){
// Выборка текста скрипта
var script = document.querySelector('.scriptCopy');
var range = document.createRange();
range.selectNode(script);
window.getSelection().addRange(range);
try{
// Теперь, когда мы выбрали текст, выполним команду копирования
var successful = document.execCommand('copy');
var msg = successful ? 'скопирован' : 'не скопирован';
console.log('Текст был ' + msg);
}
catch(err){
console.log('Ой, не могу скопировать');
}
// Снятие выделения
window.getSelection().removeAllRanges();
});
При этом есть кнопка:
<input type="button" size="60" value="Скопировать" class="copyBtn"/>
И поле, где находится то, что нужно скопировать(у меня это fieldset со span`ами):
<fieldset class="scriptCopy">
<span id="comment1">-- Комментарий</span>
<br><br>
<span id="output">Вывод</span>
<br><br>
<span id="role1">Роль 1</span>
<br><br>
<span id="role2">Роль 2</span>
</fieldset>
UPD:немного не дочитал до конца, но может поможет чем то всё же. ссылка
https://jsfiddle.net/jc7ddbk4/