Почему не срабатывает копирование в буфер?

Доброго дня,

Столкнулся с такой проблемой:

1) Есть у меня функция для копирования чего-либо в буфер обмена, и вроде бы вполне себе работает:

function copy(str){
  let tmp   = document.createElement('INPUT'), // Создаём новый текстовой input
      focus = document.activeElement; // Получаем ссылку на элемент в фокусе (чтобы не терять фокус)

  tmp.value = str; // Временному input вставляем текст для копирования

  document.body.appendChild(tmp); // Вставляем input в DOM
  tmp.select(); // Выделяем весь текст в input
  document.execCommand('copy'); 
  document.body.removeChild(tmp); // Удаляем временный input
  focus.focus(); // Возвращаем фокус туда, где был
}


Если вызываю ее через консоль - все отлично. Но когда делаю ее в .done() у .ajax(). - ничего не происходит. Как быть? Нужно именно чтобы по аяксу приходила строка и записывалась юзеру..
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
В буфер можно записывать только по действию пользователя: в обработчике клика, например. Но никак не по асинхронному событию где-то в коде.
You can use the "cut" and "copy" commands without any special permission if you are using them in a short-lived event handler for a user action (for example, a click handler).


Если у вас код не на странице, а это вы пилите расширение в браузер, можно запросить доп. разрешения, и тогда всё получится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы