浏览器上的复制粘贴方案

想要ctrl+c\v在浏览器上进行复制和粘贴,可以!不过也有一定的限制。

主要是监听paste事件和copy事件。事件handler函数中的event对象可以获取到clipboardData对象,通过此对象对系统的剪贴板进行操作。

window.addEventListener('copy',function(event){
    event.clipboardData.setData('text/html','');
})

这样你的剪贴板中就放置了一段html代码,在浏览器上粘贴的时候一般text/html格式的数据会自动识别,浏览器会在你粘贴的地方插入一个。当然如果你的文档不可编辑,粘贴后也是不会出现图片的。

粘贴的时候,同样可以取得clipboardData

window.addEventListener('paste',function(event){
    var htmlFragment = event.clipboardData.getData('text/html');
    var div = document.createElement('div')
    div.innerHTML = htmlFragment;
    document.appentChild(div);
});

这样你ctrl+v的时候应该就可以看到一张图片了。

事情没这么简单

当然事情没这么简单。

首先

setData和getData只能设置字符串类数据(plain_Unicode64_string)。你想向clipboardData中放置一个或者一个js原生的对象字面量是不行的。

然后

浏览器兼容性问题。

最后

我要复制粘贴图片怎么办?你可以先试试,在一个网页中ctrl+c一个张图片,然后到任何其他地方(同一个网站的textarea,QQ的聊天界面,邮箱新邮件的编辑界面等等)去粘贴,看能不能粘出来。差异性是超乎你想象的。为什么呢?

有空再写。

你可能感兴趣的:(浏览器上的复制粘贴方案)