Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @param {String} HTML representing a single element
- * @return {Element}
- */
- function htmlToElement(html) {
- var template = document.createElement('template');
- template.innerHTML = html;
- return template.content.firstChild;
- }
- /**
- * @param {String} HTML representing any number of sibling elements
- * @return {NodeList}
- */
- function htmlToElements(html) {
- var template = document.createElement('template');
- template.innerHTML = html;
- return template.content.childNodes;
- }
- function copyTextToClipboard(text) {
- if (!text) {
- console.warn("text to be copied is empty and the clipboard will not be updated");
- }
- 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
- // is visible whilst the popup box asking the user for permission for
- // the web page to copy to the clipboard.
- //
- // Place in top-left corner of screen regardless of scroll position.
- textArea.style.position = 'fixed';
- textArea.style.top = 0;
- textArea.style.left = 0;
- // Ensure it has a small width and height. Setting to 1px / 1em
- // doesn't work as this gives a negative w/h on some browsers.
- textArea.style.width = '2em';
- textArea.style.height = '2em';
- // We don't need padding, reducing the size if it does flash render.
- textArea.style.padding = 0;
- // Clean up any borders.
- textArea.style.border = 'none';
- textArea.style.outline = 'none';
- textArea.style.boxShadow = 'none';
- // Avoid flash of white box if rendered for any reason.
- textArea.style.background = 'transparent';
- textArea.value = text;
- document.body.appendChild(textArea);
- textArea.select();
- try {
- var successful = document.execCommand('copy');
- var msg = successful ? 'successful' : 'unsuccessful';
- } catch (err) {
- console.error('Oops, unable to copy');
- }
- document.body.removeChild(textArea);
- }
Add Comment
Please, Sign In to add comment