用JavaScript實(shí)現(xiàn)事件的綁定,移除,以及一些常用的事件屬性的獲取,時(shí)常要考慮到在不同瀏覽器下的兼容性,下面給出了一個(gè)跨瀏覽器的事件對(duì)象:
var EventUtil = { on: function(element, type, handler) {/* 添加事件 */ if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) {//IE 注意:此時(shí)事件處理程序會(huì)在全局作用域中運(yùn)行,因此用attachEvent綁定的事件,此時(shí)在事件處理函數(shù)里的this 等于window,使用時(shí)要注意 element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } }, off: 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; } }, getEvent: function(event) {/* 返回對(duì)event對(duì)象的引用 */ return event ? event : window.event; }, getTarget: function(event) {/* 返回事件的目標(biāo) */ return event.target || event.srcElement; }, preventDefault: function(event) { /* 取消事件的默認(rèn)行為 */ if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, stopPropagation: function(event) {/* 阻止事件冒泡 */ if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true; } }, /* mouseover 和mouserout 這兩個(gè)事件都會(huì)涉及把鼠標(biāo)指針從一個(gè)元素的邊界之內(nèi)移動(dòng)到另一個(gè)元素的邊界之內(nèi)。*/ getRelatedTarget: function(event) { if (event.relatedTarget) { return event.relatedTarget; } else if (event.toElement) {//IE8 mouserout事件 return event.toElement; } else if (event.fromElement) {//IE8 mouseover事件 return event.fromElement; } else { return null;//其他事件 } } };
調(diào)用如下:
EventUtil.on(document, "click", function(event){//為document元素綁定click事件 event = EventUtil.getEvent(event);//獲取event事件對(duì)象 alert("Screen coordinates: " + event.screenX + "," + event.screenY); });
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號(hào)-2
違法及侵權(quán)請(qǐng)聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬(wàn)商天勤律師事務(wù)所王興未律師提供法律服務(wù)