#javascript #google-chrome #firefox #browser #safari
#javascript #google-chrome #firefox #браузер #safari
Вопрос:
Я хотел бы знать, есть ли файл в данных пользовательского буфера обмена.
Это возможно, когда я фиксирую событие вставки, как здесь:
document.addEventListener('paste', (event) => {
const data = event.clipboardData;
const file = data amp;amp; data.files amp;amp; data.files[0];
if (file) {
// do something with the file.
}
});
Однако для этого требуется, чтобы пользователь вставил его на страницу.
Я бы хотел добиться этого без каких-либо действий, подобных захвату текста из буфера обмена:
setInterval(()=>{
const text = await navigator.clipboard.readText();
if (text){
// do something....
}
},1000)
Я могу запустить этот код в любое время, когда захочу, и «узнать», есть ли у пользователя какой-либо текст в их буфере обмена.
Проблема в том, что я не могу получить доступ к подобным файлам. Я получаю пустую строку, если в буфере обмена есть файл.
Я понимаю, что это может быть проблемой безопасности, но, по крайней мере, я хотел бы знать, есть ли какой-либо файл в их буфере обмена (а не текст)
Ответ №1:
Используйте clipboard.read
метод вместо readText
. Это для любого типа данных.
https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/read