Dokument.execCommand('copy') funktioniert nicht in Chrome

Auf Chrome nur document.execCommand('copy') gibt true zurück, aber nicht den text kopieren, es löscht die Zwischenablage.

Kann ich nicht finden, wer hatte das gleiche problem, es gibt viele ähnliche Fragen aber bitte nicht markieren Sie diese als eine doppelte, es sei denn, es ist wirklich.

  • Ich rufe selection.removeAllRanges() vor selection.addRange().
  • selection.getRangeAt(0).cloneContents() gibt ein fragment mit der korrekten text
  • Den text in der textarea nicht angezeigt werden ausgewählte
  • Wenn ich rufe textarea.select() vor document.execCommand('copy') im text wird ausgewählt und bekommt allem coppied in die Zwischenablage. Ich will nicht, dies zu tun, weil es konzentriert sich die textarea-Komponente und bewirkt, dass die Seite zu scrollen.
  • Getestet auf Chrome 61 und 63, MacOS
  • In Safari nicht funktioniert

Hier mein code (in ein click-Ereignis-listener)
https://codepen.io/jakecr/pen/XVXvKz

var textarea = document.createElement('textarea');
textarea.textContent = 'coppied text';
document.body.appendChild(textarea);

var selection = document.getSelection();
var range = document.createRange();
range.selectNodeContents(textarea);
selection.removeAllRanges();
selection.addRange(range);

//DOESN'T WORK WITHOUT THIS
//textarea.select();

console.log(selection.getRangeAt(0).cloneContents());
console.log('copy success', document.execCommand('copy'));

InformationsquelleAutor Jake | 2017-12-19

Schreibe einen Kommentar