针对IE,修改clipboradData

来源:互联网 发布:淘宝致远名表 编辑:程序博客网 时间:2024/05/20 17:23

clipboradData是IE浏览器支持的window对象

如果我们想要在用户复制页面上的内容到剪贴板时,在他所复制的内容本身之外,再加上其它的一些东西,如文章的网址,版权等,我们就需要操作剪贴板对象了。

剪贴板的操作很简单,以最简单的思维,是这样:

1.将剪贴板中的内容取出;

2.字符串拼接上,我们想要加入的数据;

3.再将处理后的字符串,写回剪贴板。

代码如下:

 onload = function () {            var body = document.getElementsByTagName("body")[0];            body.oncopy = function () {                    var txt = window.clipboardData.getData("text");                    txt += "\r\n文章来自此处http://www.cnlogs.net";                    window.clipboardData.setData("text", txt);            };        }
结果呢?不如人意。

每次剪贴板粘贴出来的内容,都是上次复制的东西,但经过跟踪看到上面的代码,确实执行了,但有一个小细节,必须得注意,那就是当我们跟踪到txt(也就是从剪贴板取出来的内容),都不是刚刚复制的东西,因此,我们总是得不到想到的结果。

为什么?

其实,思路是没有错的,只是剪贴板的延时,导致我们每次操作的都是上次复制的东西,找到的出问题的地方,那解决问题也就简单了。既然剪贴板有延时,那我们就等他一下就好。让他过一段时间再执行,就OK啦(这里的一段时间,仅仅是几毫秒而已);

给body.oncopy加上setTimeout,就没问题了。

 body.oncopy = function () {                setTimeout(function () {                    var txt = window.clipboardData.getData("text");                    txt += "\r\n文章来自此处http://www.cnlogs.net";                    window.clipboardData.setData("text", txt);                }, 100);            };


0 0
原创粉丝点击