首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么clipboardData没有截图数据

为什么clipboardData没有截图数据
EN

Stack Overflow用户
提问于 2019-12-06 10:48:10
回答 1查看 218关注 0票数 1

如果我用键盘的“打印屏幕”键截图,复制它并粘贴到一个普通的<div contenteditable />元素中,屏幕截图就会工作并显示在那里,就像你在这里看到的https://jsfiddle.net/2sf7benL/1/

但是,如果我将paste事件侦听器添加到<div contenteditable />元素中,并将屏幕截图粘贴到其中,则clipboardData对象中不会捕获任何内容,如下所示:https://jsfiddle.net/kds265Lv/2/

编辑以添加更多上下文:

复制步骤:

在下面的演示中,按keyboard

  • Paste上的“打印屏幕”键
  1. 。屏幕截图将显示在<div />.

代码语言:javascript
复制
div { height: 200px; width: 200px; border: 1px solid}
代码语言:javascript
复制
<div contenteditable></div>

这是我想要的最终结果。现在,我不是简单地在contenteditable中粘贴它,而是侦听它的paste事件,以便访问clipboardData中的屏幕快照,最后在contenteditable中使用URL.createObjectURL呈现它。

代码语言:javascript
复制
function handlePaste (e) {
		var clipboardData, pastedData;

		// Stop data actually being pasted into div
		e.stopPropagation();
    e.preventDefault();

		// Get pasted data via clipboard API
    clipboardData = e.clipboardData || window.clipboardData;
    console.log(clipboardData)// this is always empty when i paste screenshots
    console.log(clipboardData.files[0]) // TADA!!!
    // Do whatever with pasteddata
}

document.getElementById('editableDiv').addEventListener('paste', handlePaste);
代码语言:javascript
复制
div {height: 200px; width:200px; border:1px solid}
代码语言:javascript
复制
<div id='editableDiv' contenteditable='true'></div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-06 13:23:05

哇为什么我这么笨..。但公平地说,火狐和Chrome的控制台是误导..。它实际上是有效的,但是console.log eventevent.clipboardData在chrome/FF中会给出错误的负结果,比如空数组和length: 0 :(

所以你只需要像这样更深入地挖掘:event.clipboardData.files[0]

你会看到的!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59211656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档