文章出處

for Event

github: https://github.com/laixiangran/commonJS/blob/master/src/forEvent.js

代碼

(function(window, undefined) {

    var com = window.COM = window.COM || {};

    com.$E = {
        // 添加事件
        addEvent: function(element, type, handler) {
            if (element.addEventListener) {
                element.addEventListener(type, handler, false);
            } else if (element.attachEvent) {
                element.attachEvent("on" + type, handler);
            } else {
                element["on" + type] = handler;
            }
        },

        // 移除事件處理程序
        removeEvent: function(element, type, handler) {
            if (element.removeEventListener) {
                element.removeEventListener(type, handler, false);
            } else if (element.detachEvent) {
                element.detachEvent("on" + type, handler);
            } else {
                element["on" + type] = null;
            }
        },

        // 獲取對event對象的引用
        getEvent: function(event) {
            return event ? event : window.event;
        },

        // 獲取事件的目標
        getTarget: function(event) {
            return event.target || event.srcElement;
        },

        // 取消事件的默認行為
        preventDefault: function(event) {
            if (event.preventDefault){
                event.preventDefault();
            } else {
                event.returnValue = false; // IE
            }
        },

        // 阻止事件流(由于IE不支持事件捕獲,該方法只能阻止事件冒泡)
        stopPropagation: function(event) {
            if (event.stopPropagation) {
                event.stopPropagation();
            } else {
                event.cancelBubble = true; // IE
            }
        },

        // 獲取事件相關元素
        getRelatedTarget: function(event) {
            if (event.relatedTarget) {
                return event.relatedTarget;
            } else if (event.toElement) { // IE下的mouseout事件
                return event.toElement;
            } else if (event.fromElement) { // IE下的mouseover事件
                return event.fromElement;
            } else {
                return null;
            }
        },

        // 獲取鼠標按鈕值(0:主鼠標按鈕(一般是鼠標左鍵),1:中間的鼠標按鈕(鼠標滾輪按鈕),2:次鼠標按鈕(一般是鼠標右鍵))
        getButton: function(event) {
            //  檢測是否支持DOM版鼠標事件
            if (document.implementation.hasFeature("MouseEvents", "2.0")) {
                return event.button;
            } else { // IE
                switch (event.button) {
                    case 0:
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                        return 0;
                    case 2:
                    case 6:
                        return 2;
                    case 4:
                        return 1;
                }
            }
        },

        // 獲取鼠標滾輪增量值
        getWheelDelta: function(event) {
            // 當向前滾動鼠標滾輪時,wheelDelta是120的倍數;當向后滾動鼠標滾輪時,wheelDelta是-120的倍數
            if (event.wheelDelta){
                // Opera 9.5之前的版本中,wheelDelta值的正負號是顛倒的,則這里需要使用瀏覽器檢測技術來確定實際的值
                return (com.$B.engine.opera && com.$B.engine.opera < 9.5 ?
                        -event.wheelDelta : event.wheelDelta);
            } else { // Firefox下,有關鼠標滾輪的信息則保存在detail屬性中,當向前滾動鼠標滾輪時,這個屬性的值是-3的倍數,當向后滾動鼠標滾輪時,這個屬性的值是3的倍數
                return -event.detail * 40;
            }
        },

        // 獲取鍵盤事件中的字符ASCII編碼
        getCharCode: function(event) {
            if (typeof event.charCode == "number") {
                return event.charCode;
            } else {
                return event.keyCode; // IE8及之前版本和Opera
            }
        },

        // 獲取剪貼板內容
        getClipboardText: function(event) {
            var clipboardData = (event.clipboardData || window.clipboardData);

            // clipboardData.getData()用于從剪貼板中取得數據,它接受一個參數,即要取得的數據的格式
            // 在IE中,有兩種數據格式:"text"和"URL"
            // 在Firefox、Safari和Chrome中,這個參數是一種MIME類型;不過,可以用"text"代表"text/plain"
            return clipboardData.getData("text");
        },

        // 設置剪切板內容,設置成功返回true
        setClipboardText: function(event, value) {
            if (event.clipboardData) {
                // 由于Safari和Chrome的clipboardData.setData()方法不能識別"text"類型,則這里只能寫"text/plain"
                return event.clipboardData.setData("text/plain", value);
            } else if (window.clipboardData) {
                return window.clipboardData.setData("text", value);
            }
        }
    }
}(window));

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()