純原生JS模擬複製貼上功能 支援IE5+
阿新 • • 發佈:2019-01-09
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瀏覽器 } }