Чтение файла из буфера обмена вне события вставки в браузере

#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