瘋狂

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

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

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

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

          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);
          

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


          網站導航:
           
          主站蜘蛛池模板: 襄垣县| 林口县| 五莲县| 宁强县| 滦南县| 山丹县| 垦利县| 昔阳县| 福安市| 谷城县| 石泉县| 七台河市| 安多县| 九龙城区| 新建县| 昆明市| 梓潼县| 海丰县| 华容县| 横峰县| 阜城县| 兴海县| 武宣县| 株洲市| 呼玛县| 房产| 吉首市| 临清市| 保亭| 博罗县| 达拉特旗| 长武县| 阿鲁科尔沁旗| 定南县| 昭平县| 合作市| 定兴县| 盐城市| 益阳市| 雅安市| 文昌市|