javascript - JS ClipboardEvent clipboardData 总是空的

标签 javascript angular typescript angular6

我想通过 CTRL+V 从 Angular6 中的 ClipboardEvent 接收文件。 但是剪贴板数据总是空的(我测试了图像和文本)。 我在最新的 Chrome/Firefox 版本上对其进行了测试。

enter image description here

如您在屏幕截图中所见,文件/项目属性为空。 这是我当前的代码:

  ngOnInit() {
    document.addEventListener('paste', this.pasteEvent);
  }

  private pasteEvent(e): void {
    console.log(e);
  }

最佳答案

由于安全限制和不同的浏览器支持,这可能是不可能的。

要从您的事件中获取数据,您必须在 clipboardData 上调用 getData(format)传递所需的 MIME 类型(或只是文本的“文本”)。例如

private pasteEvent(e): void {
  console.log(e.clipboardData.getData("text/plain");
}

获取文本。我不确定您是否可以获取文件。

当前的 Chrome 还支持新的 Clipboard API :

private async pasteEvent(e)  {
  const text = await navigator.clipboard.readText();
  console.log(text);
}

虽然不支持通用的 read() 方法。

关于javascript - JS ClipboardEvent clipboardData 总是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50606313/

相关文章:

javascript - 为什么在 geolocation.getCurrentPosition 的回调中设置 session 变量不起作用

javascript - 使用纯 css 根据另一个元素的宽度设置跨度的宽度

angular - 错误 : No Component Factory Found. 是否添加到@NgModule.entryComponents?

Typescript 将元组的类型元组转换为元组(扁平元组)

javascript - Angular 和 TypeScript 循环遍历对象

javascript - 如何从 typescript 调用 JavaScript 包含中的方法?

javascript - ng-repeat through object with value 作为数组 Angular

javascript - 滑动菜单过渡

angular - Firebase Cloud Functions 访问 Firebase 托管文件

angular - 无法解析 LocationTracker 的所有参数