Как скопировать рассчитанное значение в буфер обмена? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть формула, которая вычисляет значение.Это значение я хочу вставить в лист Excel.Чтобы сделать его удобным для пользователя, я хочу автоматически поместить его в буфер обмена.

Я пытаюсь сделать свои первые шаги в JS и столкнулся с этой (вероятно) очень простой проблемой.Но все методы, которые я нашел, связаны с необработанными значениями HTML-тегов ввода.Я никогда не видел функций копирования в буфер обмена из значений, созданных в js.

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

function value2Clipboard(value) {
// please help
}

Ответы [ 3 ]

0 голосов
/ 03 июня 2019

Попробуй вот так.

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);
0 голосов
/ 03 июня 2019

Вот пример с отличным объяснением здесь

0 голосов
/ 03 июня 2019
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

  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...