2016-11-07 1 views
0

Я пытаюсь скопировать текст из текстового поля, не нажимая на кнопку. Я использую execCommand('copy'), и я могу получить его, чтобы скопировать текст, но только когда кнопка была нажата, а не программно.Текст копируется только с помощью execCommand при нажатии кнопки

Есть ли способ сделать это?

var button = document.querySelector('button'); 
 
var area = document.querySelector('textarea'); 
 

 
button.addEventListener("click", function(){ 
 
    area.select(); 
 
    var msg = document.execCommand('copy') ? "successful" : "unsuccessful"; 
 
    console.log("Copy " + msg); 
 
}); 
 

 
button.click(); // Does not copy successfully
<textarea>Text to Copy</textarea> 
 
<button>Copy</button>

ответ

0

Нет, изменения в буфер обмена должен быть инициирован пользователем.

См: https://w3c.github.io/editing/execCommand.html#dfn-the-copy-command

команды копирования запускается из document.execCommand() будет влиять только на содержимое реального буфера обмена, если событие отправляется из события, которому доверяют и инициированной пользователем, или если реализация настроена таким образом. Как реализация может быть , сконфигурированная так, чтобы разрешить доступ для записи в буфер обмена вне области этой спецификации.

Смежные вопросы