Если надо скопировать в буфер обмена текст из блока то можно использовать document.execCommand. Но при использовании данного способа не копируются иконки, точнее кода иконок.
Тут на помощь придет скрипт clipboard.js, который легко с этим справится.
Пример кода, копирования в буфер обмена на основе clipboard.js
<html> <head> <script src="/js/clipboard.min.js"></script> </head> <body> <div id="icon_xxx" class="emojis__list__native ng-binding" >Ok Emoji: 👌</div> <button class="btn" data-clipboard-action="copy" data-clipboard-target="#icon_xxx"> Copy to clipboard </button> <script> var clipboard = new ClipboardJS('.btn'); clipboard.on('success', function(e) { console.info('Action:', e.action); console.info('Text:', e.text); console.info('Trigger:', e.trigger); e.clearSelection(); }); clipboard.on('error', function(e) { console.error('Action:', e.action); console.error('Trigger:', e.trigger); }); </script> </body> </html>
Параметры кнопки
data-clipboard-action — действие кнопки, могут быть следующие значения, cut или copy.
Значение cut можно использовать если вырезание будет у тегов input или textarea
data-clipboard-target — цель кнопки, то есть откуда брать значение
data-clipboard-text — текст который надо скопировать, если использовать данный параметр то data-clipboard-target добавлять не нужно.
Так же, если вы работаете с одностраничными приложениями, вы можете более точно управлять жизненным циклом DOM.
Так можно очистить события и объекты, которые мы создаем.
var clipboard = new ClipboardJS('.btn'); clipboard.destroy();
Примечание
Почему то в Firefox в «Инспекторе», где отображается HTML код страницы, у кнопки не подсвечивается использование скрипта, скорей всего из-за того что используется не событие а создается класс ClipboardJS который подключается к кнопке. И получается, вы вроде бы сделали все правильно а копирование не работает, и не понятно, или значения параметров не верно указали или скрипт не подключили к кнопке или еще что-то.