纯原生JS模拟复制粘贴功能 支持IE5+

 if (!Function.prototype.bind) {
        Function.prototype.bind = function(obj) {
            var _self = this
                ,args = arguments;
            return function() {
                _self.apply(obj, Array.prototype.slice.call(args, 1));
            }
        }
    }
    function oCopy(name) {
        var nameobjs = document.getElementsByName(name);
        for (var i = 0; i < nameobjs.length; i++) {
            if (nameobjs[i].value != null) {
                var obj = nameobjs[i];
                obj.select();
                window.clipboardData.setData("Text", obj.value);//设置数据
            }
        }
    }

    function oPaste(ele){
        ele.onkeydown = function (event) {
            var evt = event || window.event;
            //alert(evt.keyCode);
            if (evt.ctrlKey && evt.keyCode == 86) {  // ctrl + v
                //alert('粘贴快捷键按下');
                if (window.clipboardData && window.clipboardData.getData) { // IE
                    pastedText = window.clipboardData.getData('Text');
                        //alert(pastedText);
                    ele.value = ele.value+pastedText;
                } else {
                    pastedText = e.originalEvent.clipboardData.getData('Text');//e.clipboardData.getData('text/plain');
                        // alert(pastedText);
                    ele.value = ele.value+pastedText;
                }
            } 
        }
    }

崩溃的IE5bug调了一整天,domino的showdialog弹出框中所有文本框不支持复制粘贴,只好写了两个函数模拟。

IE5 不支持bind事件和addEventListener事件,上面代码中的bind适配兼容到IE6。

无助,诸位大神有解决方案的话,还请多多指教!

 

补充:判断IE浏览器版本函数

function IEVersion() {
        var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
        var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
        var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
        var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
        if(isIE) {
            var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
            reIE.test(userAgent);
            var fIEVersion = parseFloat(RegExp["$1"]);
            if(fIEVersion == 7) {
                return 7;
            } else if(fIEVersion == 8) {
                return 8;
            } else if(fIEVersion == 9) {
                return 9;
            } else if(fIEVersion == 10) {
                return 10;
            } else {
                return 6;//IE版本<=7
            }
        } else if(isEdge) {
            return 'edge';//edge
        } else if(isIE11) {
            return 11; //IE11
        }else{
            return -1;//不是ie浏览器
        }
    }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值