瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          JavaScript 跨瀏覽器事件處理(轉(zhuǎn))

          Posted on 2013-12-28 15:19 瘋狂 閱讀(1736) 評論(0)  編輯  收藏

          如果項目中沒有使用諸如 jQuery 之類的庫,如何方便地為元素綁定事件,并兼容各種瀏覽器呢?下面這個簡單的 Utility 應(yīng)該可以考慮。

          var eventUtility = {
          	addEvent : function(el, type, fn) {
          		if(typeof addEventListener !== "undefined") {
          			el.addEventListener(type, fn, false);
          		} else if(typeof attachEvent !== "undefined") {
          			el.attachEvent("on" + type, fn);
          		} else {
          			el["on" + type] = fn;
          		}
          	},
          
          	removeEvent : function(el, type, fn) {
          		if(typeof removeEventListener !== "undefined") {
          			el.removeEventListener(type, fn, false);
          		} else if(typeof detachEvent !== "undefined") {
          			el.detachEvent("on" + type, fn);
          		} else {
          			el["on" + type] = null;
          		}
          	},
          
          	getTarget : function(event) {
          		if(typeof event.target !== "undefined") {
          			return event.target;
          		} else {
          			return event.srcElement;
          		}
          	},
          
          	preventDefault : function(event) {
          		if(typeof event.preventDefault !== "undefined") {
          			event.preventDefault();
          		} else {
          			event.returnValue = false;
          		}
          	}
          };
          

          使用方法示例:

          var eventHandler = function(evt) {
          	var target = eventUtility.getTarget(evt),
          		tagName = target.tagName;
          
          	if(evt.type === "click") {
          		if(tagName === "A" || tagName === "BUTTON") {
          			alert("You clicked on an A element, and the innerHTML is " + target.innerHTML + "!");
          			eventUtility.preventDefault(evt);
          		}
          	} else if(evt.type === "mouseover" && tagName === "A") {
          		alert("mouseovered " + target.innerHTML);
          	}
          	
          };
          
          eventUtility.addEvent(document, "click", eventHandler);
          eventUtility.addEvent(document, "mouseover", eventHandler);
          
          eventUtility.removeEvent(document, "mouseover", eventHandler);
          

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 额尔古纳市| 浪卡子县| 青海省| 墨竹工卡县| 略阳县| 南城县| 南郑县| 灌云县| 镇雄县| 桓仁| 青冈县| 新密市| 左贡县| 通渭县| 深水埗区| 汾阳市| 苗栗市| 榆中县| 庆阳市| 韩城市| 曲靖市| 达日县| 广州市| 仙游县| 呼图壁县| 江津市| 神木县| 北流市| 临泉县| 荔波县| 杭州市| 千阳县| 开平市| 东乡| 南丹县| 瓦房店市| 威信县| 灵武市| 泾源县| 格尔木市| 京山县|