JS读取粘贴板内容

摘要:
提示:有三种方式可以在元素中粘贴内容:1》按下CTRL+V2》从浏览器的编辑菜单中选择"Paste(粘贴)"3》右击鼠标按钮在上下文菜单中选择"Paste(粘贴)"命令。当向元素上粘贴文本内容时执行JavaScript:尝试在段落中粘贴内容。

1.1 监听onpaste事件

1.1.1 定义和用法

npaste 事件在用户向元素中粘贴文本时触发。

注意:虽然使用的 HTML 元素都支持 onpaste 事件,但实际上并非支持所有元素,例如 <p> 元素, 除非设置了 contenteditable 为 "true" (查看下文的更多实例)。

提示:onpaste 事件通常用于 type="text" 的 <input> 元素。

提示:有三种方式可以在元素中粘贴内容:

1》按下 CTRL + V

2》从浏览器的编辑菜单中选择 "Paste(粘贴)"

3》右击鼠标按钮在上下文菜单中选择 "Paste(粘贴)" 命令。

1.1.2 语法

HTML 中:

<elementonpaste="myScript">

JavaScript 中:

object.onpaste=function(){myScript};

JavaScript 中, 使用 addEventListener() 方法:

object.addEventListener("paste",myScript);

注意:Internet Explorer 8 及更早 IE 版本不支持addEventListener()方法。

当向 <p> 元素上粘贴文本内容时执行 JavaScript (注意 contenteditable 设置为 "true"):

<p contenteditable="true" onpaste="myFunction()">尝试在段落中粘贴内容。</p>

1.1.3 event.clipboardData

通过事件回调中的event参数,获取剪贴板数据event.clipboardData(不是所有的浏览器都支持)

// '/image/.test(event.clipboardData.types)' // 检查是否为图片
// 获取图片二进制数据(似乎浏览器的实现都会有大小差异)
Array.each(event.clipboardData.items, function(item){
if (/image/.test(item.type)) {
var blob = item.getAsFile();
var URL = window.URL || window.webkitURL;
var source = URL.createObjectURL(blob);
console.log(source) 
}
});

通过Ajax将数据发送到后端服务器,后端将图片存储起来后,返回一个图片可访问地址

访问这个地址就可以看到图片了

1.2 使用样例

1》绑定单个元素事件

window.addEvent("paste",function(e){ });

<html>
<head>
    <title>test chrome paste image</title>
<style>DIV#editable {width:400px;height:300px;border:1px dashed blue;
    }
</style>
<script type="text/javascript">
window.onload=function() {
    functionpaste_img(e) {
    debugger;
        if( e.clipboardData.items ) {
        //google-chrome 
alert('support clipboardData.items(chrome ...)');
            ele =e.clipboardData.items
            for(vari = 0; i <ele.length; ++i) {
                if( ele[i].kind == 'file' &&ele[i].type.indexOf('image/') !== -1) {
                    varblob =ele[i].getAsFile();
                    window.URL =window.URL ||window.webkitURL;
                    varblobUrl =window.URL.createObjectURL(blob);
                    console.log(blobUrl);

                    varnew_img=document.createElement('img');
                    new_img.setAttribute('src', blobUrl);
                    varnew_img_intro =document.createElement('p');
                    new_img_intro.innerHTML = 'the pasted img url(open it in new tab): <br /><a target="_blank" href="http://t.zoukankan.com/' +blobUrl + '">' +blobUrl + '</a>';

                    document.getElementById('editable').appendChild(new_img);
                    document.getElementById('editable').appendChild(new_img_intro);
                }

            }
        } else{
            alert('non-chrome');
        }
    }
    document.getElementById('editable').onpaste=function(){paste_img(event);return false;};
}

</script>
</head>
<body >
    <h2>test image paste in browser</h2>
    <div id="non-editable" >
        <p>copy the following img, then paste it into the area below</p>
        <img src="./128.png" />
    </div>
    <div id="editable"contenteditable="true" >
        <p>this is an editable div area</p>
        <p>paste the image into here.</p>
    </div>
</body>
</html>

2》遍历循环所有的事件

JS读取粘贴板内容第1张

免责声明:文章转载自《JS读取粘贴板内容》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信浏览器video播放视频踩坑通信知识科普下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

微软的坑:Url重写竟然会引起IIS内核模式缓存不工作

万万没有想到!当初为了解决使用负载均衡时记录客户端IP地址的问题,在IIS URL Rewrite Module中增加了一条URL重写规则(详见迁入阿里云后遇到的Request.UserHostAddress记录IP地址问题):3 <rewrite> <allowedServerVariables> &...

js执行顺序——学习笔记

  我们知道有个全局的 window对象,js的一切皆window上的属性和方法。window上有个window.document属性,记录了整个html的dom树,document是顶层。   body 和 head 都是 doc上的一个属性。   上图中,head里面的打印结果是null,因为document是按照和我们阅读文字一样的方式按顺序加...

【js重学系列】作用域

作用域 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 在 Javascript 中,作用域分为 全局作用域 和 函数作用域 什么是作用域呢,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。 全局变量 变量在函数外定义,即为全局变量。 全局变量有 全局作用域: 网页中所有脚本和函数均可使...

java大文件(视频)分块上传

一、 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。 支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端文件夹层级结构与本地相同。 支持大文件批量上传(20G)和下载,同时需...

js和java中使用join来进行数组元素的连接

  合理地使用join来进行数组中元素的连接,代码简洁,比自己编码也更为方便。   js中join的用法 var arr = new Array(3) arr[0] = "a" arr[1] = "b" arr[2] = "c" arr.join(".") a.b.c ------------------ arr.join(",") a,b,c   ja...

【jmeter】JMeter处理Cookie与Session

有些网站保存信息是使用Cookie,有些则是使用Session.对于这两种方式,JMeter都给予一定的支持。 1.Cookie 添加方式:线程组-配置元件-HTTP Cookie 管理器,如下图: 2.Session 添加方式:线程组-前置处理器 -HTTP URL 重写修饰符,如下图: 有些tomcat的session实现不是通过cookie的,而...