jQuery為了兼容性會把系統暴露出來的event重新整理一遍,但是復制粘貼的event就被丟掉了。
所以要在所有原生瀏覽器想實現復制粘貼,大家都用flash實現了。其實只要用原生的方法捕獲事件就ok。簡單來個方法。
var EventUtil = { addHandler: function (element, type, handler) { if(!element) return false; if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } }, getEvent: function (event) { return event ? event : window.event; }, getClipboardText: function (event) { var clipboardData = (event.clipboardData || window.clipboardData); return clipboardData.getData("text"); }, setClipboardText: function (event, value) { if (event.clipboardData) { return event.clipboardData.setData("text/plain", value); } else if (window.clipboardData) { return window.clipboardData.setData("text", value); } }, preventDefault: function (event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } } };
用原生的addEventListener暴露出來的e就有clipboardData了。