Я использую MacBook, и у меня есть кнопка копирования, которая копирует сгенерированный текст, введенный в текстовое поле. Когда я проверяю буфер обмена, ничего не скопировано. Это мой код:

document.querySelector("#btnCopy").addEventListener('click', copy);
async function copy() {
  var text = document.querySelector("#docNumber");
  text.select();
  navigator.clipboard.writeText(text.value)
}

Любое предположение о том, что происходит? Спасибо сообществу!

2
Rafael Nicola 25 Окт 2021 в 00:42
Не могли бы вы добавить фрагмент, дополнительный код или сообщение об ошибке?
 – 
Danilo Ivanovic
25 Окт 2021 в 00:51

2 ответа

Лучший ответ

Следующий подход работает в Chrome, Firefox, Internet Explorer и Edge, а также в последних версиях Safari (поддержка копирования была добавлена ​​в версии 10, выпущенной в октябре 2016 года).

document.querySelector("#btnCopy").addEventListener('click', copyToClipboard);

function copyToClipboard() {
  let text = document.querySelector("#docNumber");
  text.select();
  text = text.value;

  if (window.clipboardData && window.clipboardData.setData) {
    // IE-specific code path to prevent textarea being shown while dialog is visible
    return window.clipboardData.setData("Text", text);

  } else if (document.queryCommandSupported && 
             document.queryCommandSupported("copy")) {
    var textarea = document.createElement("textarea");
    textarea.textContent = text;
    // Prevent scrolling to bottom of page in MS Edge
    textarea.style.position = "fixed";
    document.body.appendChild(textarea);
    textarea.select();
    try {
      // Security exception may be thrown by some browsers
      return document.execCommand("copy");
    } catch (ex) {
      console.warn("Copy to clipboard failed.", ex);
      return false;
    } finally {
      document.body.removeChild(textarea);
    }
  }
}
<input id="docNumber" type="text" value="Clipboard text test">
<button id="btnCopy">Copy to Clipboard</button>

Справка:

1
ℛɑƒæĿᴿᴹᴿ 25 Окт 2021 в 01:16

Я думаю, вам нужно присвоить выделенный текст чему-то.

let t = text.select();

Или еще лучше:

navigator.clipboard.writeText(text.select())
0
polisen 25 Окт 2021 в 00:50