1. 程式人生 > >純原生JS模擬複製貼上功能 支援IE5+

純原生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調了一整天,多米諾的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瀏覽器
        }
    }