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()
vorselection.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()
vordocument.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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich festgestellt, dass Sie können nicht dynamisch fügen Sie ein input-Feld, fügen Sie text und kopieren ihn in die Zwischenablage. Ich war in der Lage, kopieren Sie text aus einem vorhandenen input-tag.
Ich war das hinzufügen eines hidden input Feld, und ich sollte ändern, was ich gefunden habe. Was ich am Ende tun, ist das anfügen einer sichtbaren Eingabefeld, indem Sie den Inhalt
execCommand('copy')
, dann verstecken Sie die input-element.InformationsquelleAutor voodoologic