javascript - 从浏览器中粘贴事件之外的剪贴板读取文件

标签 javascript google-chrome firefox browser safari

我想知道用户剪贴板数据上是否有文件。
当我像这里一样捕获粘贴事件时,这是可能的:

document.addEventListener('paste', (event) => {
  const data = event.clipboardData;
  const file = data && data.files && data.files[0];
  if (file) {
      // do something with the file.
  }
  
});
但是,这需要用户将其粘贴到页面上。
我想在没有他们做任何 Action 的情况下实现它,类似于从剪贴板捕获文本:
setInterval(()=>{
    const text = await navigator.clipboard.readText();
    if (text){
       // do something....
    }
},1000)
我可以随时运行此代码,并“找出”用户的剪贴板上是否有任何文本。
问题是我无法访问这样的文件。如果剪贴板上有文件,我会得到一个空字符串。
我知道这可能是一个安全问题,但至少我想知道他们的剪贴板上是否有任何文件(而不是文本)

最佳答案

使用 clipboard.read方法而不是 readText .它适用于任何类型的数据。
https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/read

关于javascript - 从浏览器中粘贴事件之外的剪贴板读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64512158/

相关文章:

javascript - Titanium Android 应用程序在更新 ScrollableView 时崩溃

javascript - 在 .js var 中应用 CSS 样式

javascript - 如何从后台获取数据并显示在弹出页面中

javascript - 无法运行简单的node.js应用程序抛出错误: listen EACCES

php - 使用 PHP 创建 Google Chrome Crx 文件

javascript - Flash 总是出现在谷歌浏览器的顶部

javascript - 系统自时间较长的 Chrome 性能分析

java - session 未创建异常 : Unable to create new service: GeckoDriverService with Selenium Grid on Ubuntu failing to drive Firefox

css - 仅在 mozilla 中跨网页的空白

html - @font-face 在 Firefox 中不合作