JSFiddle - React, Tailwind, and code Playground

HTML

<button type="button" onclick="copyTextToClipboard('Foobar!')">
Set Foobar to clipboard
</button>

JavaScript

function detectIE() {
            var ua = window.navigator.userAgent;

            var msie = ua.indexOf('MSIE ');
            if (msie > 0) {
                // IE 10 or older => return version number
                return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
            }

            var trident = ua.indexOf('Trident/');
            if (trident > 0) {
                // IE 11 => return version number
                var rv = ua.indexOf('rv:');
                return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
            }

            // other browser or edge
            return false;
        }

        // source: http://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript
        // enhancement with special case for IEs, otherwise the temp textarea will be visible
        function copyTextToClipboard(text) {

            if (detectIE()) {
                try {
                    window.clipboardData.setData('Text', text);
                    console.log('Copying text command via IE-setData');
                } catch (err) {
                    console.log('Oops, unable to copy via IE-setData');
                }
            }
            else {

                var textArea = document.createElement("textarea");

                //
                //  This styling is an extra step which is likely not required. 
                //
                // Why is it here? To ensure:
                // 1. the element is able to have focus and selection.
                // 2. if element was to flash render it has minimal visual impact.
                // 3. less flakyness with selection and copying which might occur if
                //    the textarea element is not visible.
                //
                // The likelihood is the element won't even render, not even a flash,
                // so some of these are just precautions. 
                // 
                // However in IE the element
 ...