Проблема в том, что время, затрачиваемое на обработку данных, превышает execCommand("copy")
.
На самом деле копия должна вызываться в генерируемом пользователем событии, и к ней прикреплено ограничение по времени (упоминания нет)где-нибудь, но с моей работой я нашел, что это было ~ 5 секунд, любая спецификация на этом будет приветствоваться).Если ваша обработка данных требует большего, она не будет копировать данные.Одним из решений этой проблемы является предварительная обработка данных, а затем открытие диалогового окна / всплывающего окна, чтобы попросить пользователя нажать кнопку для копирования данных.
Далее для быстрого копирования (не работает в сафари) выМожно использовать метод ниже:
var contentToCopy;
function copyDataToClipboard(e) {
e.preventDefault(); // default behaviour is to copy any selected text
e.clipboardData.setData("text/plain", contentToCopy);
}
function copy(content) {
contentToCopy = content;
document.addEventListener("copy", copyDataToClipboard);
try {
document.execCommand("copy");
} catch (exception) {
console.error("Copy to clipboard failed");
} finally {
document.removeEventListener("copy", copyDataToClipboard);
}
}
copy(content = [Any content you would like to copy to clipboard]);
Надеюсь, что это решит ваши проблемы, связанные с копированием больших данных.