Получить текст из буфера обмена с Javascript - PullRequest
0 голосов
/ 31 января 2020

Я хочу вставить текст в текстовую область при нажатии кнопки. Но я понятия не имею, как получить текст из буфера обмена. Я хочу использовать codemirror и использовать функцию:

function insertTextAtCursor(editor, text) {
    var doc = editor.getDoc();
    var cursor = doc.getCursor();
    doc.replaceRange(text, cursor);
}

, чтобы вставить текст при нажатии кнопки. Кто-нибудь может дать мне подсказку, как получить текст из буфера обмена?

1 Ответ

0 голосов
/ 31 января 2020

Вы можете использовать navigator.clipboard.readText() с браузерами, которые его поддерживают.

var editor = CodeMirror.fromTextArea(document.querySelector('textarea'), {
  lineNumbers: true
});

document.querySelector("button").addEventListener("mousedown", function(e) {
  e.preventDefault()
  if (window.navigator) {
    navigator.clipboard.readText().then(setCMText);
  }
});

function setCMText(text) {
  if (editor.getSelection().length) {
    editor.replaceSelection(text);
  } else {
    var doc = editor.getDoc();
    var cursor = doc.getCursor();
    var pos = {
      line: cursor.line,
      ch: cursor.ch
    }
    doc.replaceRange(text, pos);
  }
}
<link href="https://cdn.jsdelivr.net/npm/codemirror@5.51.0/theme/ambiance.css" rel="stylesheet" />
<link href="https://cdn.jsdelivr.net/npm/codemirror@5.51.0/lib/codemirror.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.51.0/lib/codemirror.min.js"></script>

<button>Paste</button>
<textarea>
Hello World
</textarea>
...