原生 js 实现截图粘贴预览图片功能

简介: 原生 js 实现截图粘贴预览图片功能

效果


比如我截图我的 csdn 的信息89f839d7e1414c38b0c43c30fcd8501c.png然后粘贴到区域里,就能预览这个图片2a355e8c80894ec8859b97d55bab2ae5.png

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>截图粘贴预览图片</title>
    <style>
        div.preview-img {
            border: 2px solid #ddd;
            margin: .5rem;
            padding: .5rem;
            min-height: 30rem;
            border-radius: 10px;
            background-color: #fff;
        }
    </style>
</head>
<body>
    <h1 style="text-align: center;">kaimo 测试截图粘贴预览图片功能,请在下面容器进行粘贴</h1>
    <div class="preview-img"></div>
    <script>
        // 监听粘贴事件
        const target = document.querySelector("div.preview-img");
        target.addEventListener("paste", (event) => {
            event.preventDefault();
            let paste = event.clipboardData || window.clipboardData;
            // 找到图片文件file
            if(paste.files && paste.files.length > 0 && paste.files[0].type === "image/png") {
                let fr = new FileReader();
                // 读取 file 然后返回 data:URL 格式的字符串(base64 编码)以表示所读取文件的内容。
                fr.readAsDataURL(paste.files[0]);
                fr.onload = function(e) {
                    let img = document.createElement("img");
                    img.src = e.target.result;
                    target.innerHTML = "";
                    target.appendChild(img);
                } 
            }else{
                alert("请截图粘贴");
            }
        });
    </script>
</body>
</html>



参考资料


   FileReader.readAsDataURL()


   readAsDataURL 方法会读取指定的 Blob 或 File 对象。读取操作完成的时候,readyState 会变成已完成DONE,并触发 loadend (en-US) 事件,同时 result 属性将包含一个data:URL 格式的字符串(base64 编码)以表示所读取文件的内容。


   Element: paste 事件


   当用户在浏览器用户界面发起“粘贴”操作时,会触发 paste 事件。



目录
相关文章
|
2天前
|
JavaScript 前端开发
JS导出excel功能
JS导出excel功能
|
2天前
|
JavaScript
JS实现照片预览
JS实现照片预览
|
2天前
|
JavaScript Serverless
JS实现递归功能
JS实现递归功能
|
2天前
|
JavaScript
JS实现分页功能
JS实现分页功能
|
9天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的多功能智能手机阅读APP附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的多功能智能手机阅读APP附带文章和源代码部署视频讲解等
8 0
|
10天前
|
JavaScript 前端开发 安全
80 行 JS 代码实现页面添加水印:文字水印、多行文字水印、图片水印、文字&图片水印
80 行 JS 代码实现页面添加水印:文字水印、多行文字水印、图片水印、文字&图片水印 1. 信息标识: 水印可以用于标识文档的所有者、保密级别、状态或其他相关信息,帮助用户更好地理解文档内容的属性。 2. 版权保护: 在文档中添加水印可以帮助保护内容的版权,防止他人未经授权地复制、转载或篡改内容。 3. 安全保护: 对于敏感信息或机密文档,添加水印可以帮助防止信息泄露,提高文档的安全性。 4. 提升专业性: 在一些场景下,如商业报告、合同文件等,添加水印可以增加文档的专业性和正式性。 5. 防止截屏或拷贝: 在网页中添加水印可以防止用户通过截屏或复制粘贴等方式非法获取文档内容。
15 1
80 行 JS 代码实现页面添加水印:文字水印、多行文字水印、图片水印、文字&图片水印
|
10天前
|
JavaScript 前端开发
|
11天前
|
JavaScript Shell
Vue.js功能实现博客
Vue.js功能实现博客
|
13天前
|
JavaScript 开发者 前端开发
浅谈Vue.js与原生开发
Vue.js 是一款流行的前端框架,以其独特的模板语法简化了动态视图创建,通过指令和表达式便捷处理数据。与原生开发相比,Vue.js 提供了Vue Router进行高效路由管理,Vuex进行状态集中管理,以及丰富的生态系统和工具链如Vue CLI。Vue组件化开发、响应式数据绑定和单文件组件提高了代码复用和可维护性,但原生开发在性能和直接操作DOM方面可能更具优势。
|
18天前
|
存储 JavaScript 前端开发
JavaScript实现记住用户名功能
JavaScript实现记住用户名功能