#javascript
Вопрос:
В моем проекте у меня есть эта функция, которая копирует в буфер обмена после того, как пользователь нажал кнопку.
copy(id) {
const input = document.querySelector(`#${id}`)
input.setAttribute('type', 'text')
input.select()
document.execCommand('copy')
input.setAttribute('type', 'hidden')
if (id === 'wallet') {
this.walletCopied = true
} else if (id === 'amount') {
this.amountCopied = true
}
}
Конструкция if-else необходима для изменения значков, если пользователь их уже скопировал. Есть ли возможность проверить, что у пользователя есть в буфере обмена, потому что мне может понадобиться это еще раз, чтобы снова изменить значки, если пользователь что-то изменил в буфере обмена
Комментарии:
1. Я не вижу, что это имеет какое-либо отношение к узлу или выражению?
2.
document
В «экспрессе» нет никаких объектов. Не путайте код JavaScript, который вы отправляете в браузер и запускаете там, с другим кодом JavaScript, который вы запускаете на сервере Node.js.
Ответ №1:
На самом деле, ответ прост. Пользователь может скопировать в буфер обмена только одну строку. Итак, мы можем сделать что-то подобное:
copy(id) {
const input = document.querySelector(`#${id}`)
input.setAttribute('type', 'text')
input.select()
document.execCommand('copy')
input.setAttribute('type', 'hidden')
if (id === 'wallet') {
this.walletCopied = true
this.amountCopied = false
} else if (id === 'amount') {
this.amountCopied = true
this.walletCopied = false
}
}
Ответ №2:
document.execCommand() вызывает текстовую копию и сохраняет ее в буфере. Это что-то специфичное для окружающей среды. Чтобы узнать содержимое, вы можете написать код для запуска процесса. Для OSx мы используем:-
var proc = require('child_process').spawn('pbcopy');
// Note:- pbcopy is availalbe in osx
proc.stdin.write(data);
proc.stdin.end();
Однако для Windows все будет по-другому. Если вы хотите использовать более сложное решение, вы можете использовать clipboardy.