How to copy a div's content to clipboard without flash
You can copy to clipboard almost in any browser from input elements only (elements that has .value
property), but you can't from elements like <div>
, <p>
, <span>
... (elements that has .innerHTML
property).
But I use this trick to do so:
- Create a temporary input element, say
<textarea>
- Copy
innerHTML
from<div>
to the newly created<textarea>
- Copy
.value
of<textarea>
to clipboard - Remove the temporary
<textarea>
element we just created
function CopyToClipboard (containerid) {
// Create a new textarea element and give it id='temp_element'
var textarea = document.createElement('textarea')
textarea.id = 'temp_element'
// Optional step to make less noise on the page, if any!
textarea.style.height = 0
// Now append it to your page somewhere, I chose <body>
document.body.appendChild(textarea)
// Give our textarea a value of whatever inside the div of id=containerid
textarea.value = document.getElementById(containerid).innerText
// Now copy whatever inside the textarea to clipboard
var selector = document.querySelector('#temp_element')
selector.select()
document.execCommand('copy')
// Remove the textarea
document.body.removeChild(textarea)
}
<div id="to-copy">
This text will be copied to your clipboard when you click the button!
</div>
<button onClick="CopyToClipboard('to-copy')">Copy</button>
Little late but hope that helps!