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
...