如何将计算值复制到剪贴板?

时间:2019-06-03 07:22:29

标签: javascript variables clipboard

我有一个计算值的公式。我想将此值插入到Excel工作表中。为了使用户感到舒适,我想将其自动放置到剪贴板中。

我尝试在JS中进行第一步,并且遇到了这个(可能)非常简单的问题。但是我发现的所有方法都与html input-tags的原始值有关。我从没在js中创建的值中看到过任何复制到剪贴板的功能。

var EEFactor = 1*1; // just a formula to calculate a value
copyValue2Clipboard(EEFactor);

function value2Clipboard(value) {
// please help
}

3 个答案:

答案 0 :(得分:0)

尝试这样。

function copyToClipboard(str) {
  var el = document.createElement('textarea');
   // Set value (string to be copied)
   el.value = str;
   // Set non-editable to avoid focus and move outside of view
   el.setAttribute('readonly', '');
   el.style = {position: 'absolute', left: '-9999px'};
   document.body.appendChild(el);
   // Select text inside element
   el.select();
   // Copy text to clipboard
   document.execCommand('copy');
   // Remove temporary element
   document.body.removeChild(el);
};

var EEFactor = 1*1;

copyToClipboard(EEFactor);

答案 1 :(得分:0)

有一个示例,其中有一个很好的解释here

答案 2 :(得分:-1)

const copyToClipboard = str => {
  const el = document.createElement('textarea');  // Create a <textarea> element

  el.value = str;                                 // Set its value to the string that you want copied

  el.setAttribute('readonly', '');                // Make it readonly to be tamper-proof

  el.style.position = 'absolute';                 
  el.style.left = '-9999px';                      // Move outside the screen to make it invisible

  document.body.appendChild(el);                  // Append the <textarea> element to the HTML document

  const selected =            
      document.getSelection().rangeCount > 0        // Check if there is any content selected previously
      ? document.getSelection().getRangeAt(0)     // Store selection if found
      : false;                                    // Mark as false to know no selection existed before

  el.select();                                    // Select the <textarea> content

  document.execCommand('copy');                   // Copy - only works as a result of a user action (e.g. click events)

  document.body.removeChild(el);                  // Remove the <textarea> element

  if (selected) {                                 // If a selection existed before copying

    document.getSelection().removeAllRanges();    // Unselect everything on the HTML document

    document.getSelection().addRange(selected);   // Restore the original selection

  }
};