当前位置: 首页 > 编程笔记 >

javascript在网页中实现读取剪贴板粘贴截图功能

何建中
2023-03-14
本文向大家介绍javascript在网页中实现读取剪贴板粘贴截图功能,包括了javascript在网页中实现读取剪贴板粘贴截图功能的使用技巧和注意事项,需要的朋友参考一下

见某网站的输入框支持截屏粘贴的功能,觉得有点意思,于是将代码扒出来分享下。

可惜,目前仅有高版本的 Chrome 浏览器支持这样直接粘贴,其他浏览器目前为止还无法粘贴( IE11没测试过 ),当然这种增强型的用户体验功能有总比没有好。

输入框的结构代码:

<input type="text" id="testInput" />

为输入框绑定粘贴事件:

var input = document.getElementById( 'testInput' );

input.addEventListener( 'paste', function( event ){     // dosomething... });

粘贴事件的 Event 接口对象提供了一个 clipboardData 接口,该接口就保存了系统剪贴板中的数据,如上面所说,目前只有高版本的 Chrome 浏览器能直接访问系统剪贴板的数据。这就给截屏后保存到剪贴板中的图片于网页直接进行交互提供了一个入口。

这里所说的截屏,就是 QQ 提供的截屏或者系统自带的 PrtScn 键的截屏功能,或者其他第三方软件提供的截屏功能。

input.addEventListener( 'paste', function( event ){
    // 添加到事件对象中的访问系统剪贴板的接口
    var clipboardData = event.clipboardData,
        i = 0,
        items, item, types;

    if( clipboardData ){
        items = clipboardData.items;

        if( !items ){
            return;
        }

        item = items[0];
        // 保存在剪贴板中的数据类型
        types = clipboardData.types || [];

        for( ; i < types.length; i++ ){
            if( types[i] === 'Files' ){
                item = items[i];
                break;
            }
        }

        // 判断是否为图片数据
        if( item && item.kind === 'file' && item.type.match(/^image\//i) ){
            // 读取该图片            
            imgReader( item );
        }
    }
});

从剪贴板中取到了图片数据,就可以用 FileReader 对其进行读取了。

var imgReader = function( item ){
    var file = item.getAsFile(),
        reader = new FileReader();

    // 读取文件后将其显示在网页中
    reader.onload = function( e ){
        var img = new Image();

        img.src = e.target.result;
        document.body.appendChild( img );
    };

    // 读取文件     reader.readAsDataURL( file ); };


很短的代码就实现了,可以使用以下源码看看演示。

<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>利用 clipboardData 在网页中实现截屏粘贴的功能</title> <style type="text/css"> #box{ width:200px; height:200px; border:1px solid #ddd; } </style> </head> <body> <h1>利用 clipboardData 在网页中实现截屏粘贴的功能</h1>   <hr /> <div><input type="text" id="testInput" placeholder="截屏后粘贴到输入框中" size="30" /></div>

<script type="text/javascript"> (function(){     var imgReader = function( item ){         var blob = item.getAsFile(),             reader = new FileReader();         reader.onload = function( e ){             var img = new Image();             img.src = e.target.result;             document.body.appendChild( img );         };         reader.readAsDataURL( blob );     };

    document.getElementById( 'testInput' ).addEventListener( 'paste', function( e ){     var clipboardData = e.clipboardData,         i = 0,         items, item, types;     if( clipboardData ){         items = clipboardData.items;         if( !items ){             return;         }         item = items[0];         types = clipboardData.types || [];         for( ; i < types.length; i++ ){             if( types[i] === 'Files' ){                 item = items[i];                 break;             }         }         if( item && item.kind === 'file' && item.type.match(/^image\//i) ){             imgReader( item );         }     }     }); })();  </script> </body> </html>

 类似资料:
  • 本文向大家介绍js实现图片粘贴到网页,包括了js实现图片粘贴到网页的使用技巧和注意事项,需要的朋友参考一下 本文实例实现通过按下ctrl + v将粘贴板上的图片粘贴到网页中,话不说直接上代码 演示结果 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: Web应用程序如何检测粘贴事件并检索要粘贴的数据? 在将文本粘贴到RTF编辑器中之前,我想删除HTML内容。 之后粘贴后清除文本是可行的,但是问题是所有以前的格式都丢失了。例如,我可以在编辑器中写一个句子并将其设为粗体,但是当我粘贴新文本时,所有格式都将丢失。我只想清除粘贴的文本,并保留所有以前的格式。 理想情况下,该解决方案应可在所有现代浏览器(例如MSIE,Gecko,Chrome

  • 问题是,从vim到剪贴板的复制/粘贴停止工作。我不知道为什么。。。 在中,我也没有看到和缓冲区... 这是我的。vimrc,如果需要的话。 有什么建议吗? 谢谢

  • 本文向大家介绍php实现粘贴截图并完成上传功能,包括了php实现粘贴截图并完成上传功能的使用技巧和注意事项,需要的朋友参考一下 今天发现segmentfault的评论留言里面可以粘贴上传图片,于是研究了下怎么实现的! 原理很简单其实就是监控粘贴事件,然后检测是否粘贴的东西里面有图片,有的话直接触发ajax上传 代码可以直接运行,有兴趣你们可以试试 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我只想能够阅读纯文本。没有图像什么的。我也找到了一些关于这方面的其他文章,但是没有一个代码在Unity中工作。

  • 函数名称:读取剪贴板 函数功能:对系统剪贴板进行读取操作 函数方法 str = device.readPasteboard() 返回值 类型 说明 str string 剪贴板的内容 函数示例 写入并读取剪贴板内容 str1 = "测试写入剪贴板" device.writePasteboard(str1) --写入剪贴板后推荐加延时后再读取剪贴板,否则可能会出现读取错误的问题 mSleep(100