- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我使用键盘的“打印屏幕”键截取屏幕截图,将其复制并粘贴到普通的 <div contenteditable />
元素中,则屏幕截图将正常工作并显示在那里,如您在此处看到的 https://jsfiddle.net/2sf7benL/1/
但是,如果我将 paste
事件监听器添加到 <div contenteditable />
元素,并将屏幕截图粘贴到其中,则 clipboardData
对象中不会捕获任何内容,如下所示 https://jsfiddle.net/kds265Lv/2/
编辑添加更多上下文:
重现步骤:
按键盘上的“打印屏幕”键
将其粘贴到下面的演示中。
屏幕截图将显示在 <div />
中。
div { height: 200px; width: 200px; border: 1px solid}
<div contenteditable></div>
这就是我想要的最终结果。现在,我不是简单地将其粘贴到 contenteditable
中,而是监听其 paste
事件,以便访问 clipboardData
中的屏幕截图,并最终使用 URL.createObjectURL
中的 contenteditable
渲染它:
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);
div {height: 200px; width:200px; border:1px solid}
<div id='editableDiv' contenteditable='true'></div>
最佳答案
哇,为什么我这么笨......但公平地说,Firefox 和 Chrome 的控制台具有误导性......它实际上可以工作,但是 console.log event
和 event.clipboardData
在 chrome/FF 中会给你假阴性结果,例如空数组和 length: 0
:(
所以你只需要像这样更深入地挖掘:event.clipboardData.files[0]
你会看到它!
关于javascript - 为什么clipboardData没有截图数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59211656/
我正在尝试访问浏览器中的粘贴事件并覆盖它。但是 event.clipboardData 未定义。目前我所拥有的就是这个: function handlePaste (event) { even
我们试图让我们的用户在两个系统之间复制粘贴数据。从网页到 Electron 应用程序。 用户将点击一个按钮,我们在 copy-to-clipboard 的帮助下触发复制事件. import copy
我正在 ASP.NET WebForms 上创建 Web 应用程序,我的任务之一是将数据从网页复制/粘贴到 Excel。我/正在使用 window.clipboardData,它适用于我的用户(本地管
当用户在移动版 Safari 中粘贴图像时,我需要添加额外的行为。我使用以下代码获取 clipboardData: document.getElementById('content').addEven
我想通过 CTRL+V 从 Angular6 中的 ClipboardEvent 接收文件。但是剪贴板数据总是空的(我测试了图像和文本)。我在最新的 Chrome/Firefox 版本上对其进行了测试
我有一个 Angular2 组件,它具有从剪贴板粘贴数据的方法: inputPaste(event){ let clipboardData = event.clipboardData; ...
我看了很多帖子,但找不到以下两个问题的明确当前答案,因为标准和浏览器支持似乎一直在不断变化。 根据标准,在“复制”事件处理程序中使用 event.clipboardData.setData 更改剪贴板
我发现以下函数允许我在用户粘贴文本时获取数据。 document.addEventListener('paste', function (evt) { console.log(evt.clipbo
event.originalEvent.clipboardData.getData('Text').match(/[^\d]/)) 在上面的代码中,我不理解originalEvent和clipboar
在我的 search 中以 Javascript 方式以编程方式选择 WebView 内容,我遇到了 this Javascript code snippet ,它在窗口对象中名为 clipboard
在我的 Karma-Jasmine 测试中,我必须测试我的 onPaste 方法。 onPaste 方法: onPaste(event: any): void { const pastedText
在我们的应用程序中,我们有一个自定义粘贴函数,它调用 window.clipboardData.getData("Text") 来获取当前剪贴板数据。然后它对该数据执行一些功能。在 Edge 中,wi
这是抛出错误的代码,不知道为什么,它曾经与 Chrome 一起使用。我现在使用 Chromium,它抛出错误 Uncaught TypeError: Cannot read property 'len
我有这个 javascript 函数: function maxLengthPaste(field,maxChars) { event.returnValue=false; if((f
我想阻止在我的网站上打印屏幕。我用了但它在 chrome 和 mozilla firefox 中不起作用 $(document).keyup(function(e){ if(!e) e = w
我正在尝试在文本区域上实现最大长度。在 IE7 中,window.clipboardData.getData("Text") 返回正确的复制字符数。在 IE8 中,相同的调用返回 0。有什么问题吗?
我是一名优秀的程序员,十分优秀!