下面是我的代码:

document.getElementById("Image_Panel").addEventListener('paste', (event) => { 
console.log("Pasting an image step 1");
const clipboardData = event.clipboardData; // Check if the clipboard data contains an image 
        console.log("Pasting an image step 2");
        console.log("Clipboard: " + clipboardData.items[0]);
     //This return [object DataTransferItem]
        const imageFile = clipboardData.items[0].getAsFile(); 
        console.log("imageFile: " + imageFile);
 //This return null why? I'm sure I copied an image in the clipboard
if (imageFile) {
const blob = new Blob([imageFile], { type: imageFile.type });
 }
const reader = new FileReader();
reader.readAsDataURL(blob); 
reader.onload = () => {
const image = document.createElement('img'); 
image.src = reader.result; // Append the img element to the document body 
console.log("Pasting an image step 3");
document.body.appendChild(image); 
}
});

正如我在console.log中看到的,getAsFile()方法返回null,但我的剪贴板中有一个图像文件,我敢肯定,我如何解决这个问题,让我可以在我的html中粘贴图像?

我试着用鼠标二次点击并在上下文菜单中 Select 复制来复制一个图像,然后我用鼠标二次点击并点击同一菜单中的粘贴.我也试着用Ctrl+v,我总是在JavaScript中使用getAsFile()方法得到空表单,有人能帮我吗?即使是ChatGPT和双子座AI也帮不了我,他们只是认为我的剪贴板是空的.我期待着看到一个形象出现在我的身体里.

推荐答案

以下是代码的修订版.我在CodePen上测试了它,它起作用了.试着跟上.

document.getElementById("Image_Panel").addEventListener('paste', (event) => {
    console.log("Pasting an image step 1");
    const clipboardData = event.clipboardData;

    for (let i = 0; i < clipboardData.items.length; i++) {
        if (clipboardData.items[i].type.indexOf("image") === 0) {   
            const imageFile = clipboardData.items[i].getAsFile();

            if (imageFile) {
                console.log("Found image file:", imageFile);

                const reader = new FileReader();
                reader.onload = (loadEvent) => {
                    const image = document.createElement('img');
                    image.src = loadEvent.target.result;
                    document.body.appendChild(image);
                    console.log("Pasting an image step 3");
                };
                reader.readAsDataURL(imageFile);
                break;
            }
        }
    }
});
<input id="Image_Panel">
</input>

Javascript相关问答推荐

foreach循环中的Typescript字符串索引

每次子路由重定向都会调用父加载器函数

窗口.getComputedStyle()在MutationObserver中不起作用

MongoDB中的引用

v—自动完成不显示 Select 列表中的所有项目

用于编辑CSS样式的Java脚本

使用GraphQL查询Uniswap的ETH价格

更改预请求脚本中重用的JSON主体变量- Postman

正则表达式,允许我匹配除已定义的子字符串之外的所有内容

如何将zoom 变换应用到我的d3力有向图?

SPAN不会在点击时关闭模式,尽管它们可以发送日志(log)等

AJAX POST在控制器中返回空(ASP.NET MVC)

是否可以将Select()和Sample()与Mongoose结合使用?

本地损坏的Java脚本

我怎样才能得到一个数组的名字在另一个数组?

在将元素追加到DOM之前,createElement()是否会触发回流?混淆abt DocumentFragment行为

为什么当雪碧的S在另一个函数中时,Phaser不能加载它?

在范围数组中查找公共(包含)范围

将Windows XP转换为原始数据以在html前端中显示

Js问题:有没有办法将数据从标记表转换成图表?