clipboardData对象是为通过编辑菜单、快捷菜单和快捷键执行的编辑操作所保留的。
该对象使用系统剪贴板传送信息并保留至下一个编辑操作冲掉它。数据传送的格式特别适合于多次粘贴相同的数据。
此对象在 Microsoft®Internet Explorer 5 的脚本中可用。

之前公司需求要做一个聊天的webim程序,且支持从qq截图工具等直接截屏的图片复制到页面中,于是经过前端的调试和一些百度文档找到了clipboardData,实现了截屏粘贴到页面的功能。
JS代码如下

//在需要调用的地方使用paste1()函数,例如打开聊天窗口时调用。
function paste1() {
    (function () {
        var imgReader = function (item) {
            var blob = item.getAsFile(),
                reader = new FileReader();
            var img = new Image();
            reader.onload = function (e) {
                img.src = e.target.result;
                document.getElementsByClassName('textarea-div')[0].appendChild(img);
                var obj = document.getElementsByClassName('textarea-div')[0];
                po_Last_Div(obj);
                document.designMode = "off";
                document.execCommand('enableObjectResizing', false, 'false');
            };
            reader.readAsDataURL(blob);
            //img.setAttribute('alt','');
        };

        function addEvent(obj, sEv, fn) {
            if (obj.addEventListener) {
                obj.addEventListener(sEv, fn, false);
            } else {
                obj.attachEvent('on' + sEv, fn);
            }
        }

        addEvent(document.getElementsByClassName('textarea-div')[0], '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)) {
                    var explorer = navigator.userAgent;
//ie
                    if (explorer.indexOf("MSIE") >= 0) {
                        imgReader(item);
                    }
//firefox
                    else if (explorer.indexOf("Firefox") >= 0) {

                    }
//Chrome
                    else if (explorer.indexOf("Chrome") >= 0) {
                        imgReader(item);
                    }
//Opera
                    else if (explorer.indexOf("Opera") >= 0) {
                        imgReader(item);
                    }
//Safari
                    else if (explorer.indexOf("Safari") >= 0 && explorer.indexOf("Chrome") == -1) {
                        imgReader(item);
                    }
                }
            }
        });
    })();
}

//解决safari浏览器 发送消息后停留在输入框的问题 enter 
function po_Last_Div(obj) {
    if (window.getSelection) {//ie11 10 9 ff safari
        obj.focus(); //解决ff不获取焦点无法定位问题
        var range = window.getSelection();//创建range
        range.selectAllChildren(obj);//range 选择obj下所有子内容
        range.collapseToEnd();//光标移至最后
    }
    else if (document.selection) {//ie10 9 8 7 6 5
        var range = document.selection.createRange();//创建选择对象
        //var range = document.body.createTextRange();
        range.moveToElementText(obj);//range定位到obj
        range.collapse(false);//光标移至最后
        range.select();
    }
};

如若时光萧瑟去丶
111 声望9 粉丝

weakChickenPeng.