js添加事件、移除事件、阻止冒泡、阻止浏览器默认行为等写法讲解
程序员文章站
2023-12-30 21:43:46
js添加事件/移除事件/阻止冒泡/阻止默认行为写法(兼容ie/ff/chrome)
1.添加事件
var addevent = function( obj, type, f...
js添加事件/移除事件/阻止冒泡/阻止默认行为写法(兼容ie/ff/chrome)
1.添加事件
var addevent = function( obj, type, fn ) { if (obj.addeventlistener) obj.addeventlistener( type, fn, false ); else if (obj.attachevent) { obj["e"+type+fn] = fn; obj.attachevent( "on"+type, function() { obj["e"+type+fn].call(obj, window.event); } ); } };
2.移除事件
var removeevent = function( obj, type, fn ) { if (obj.removeeventlistener) obj.removeeventlistener( type, fn, false ); else if (obj.detachevent) { obj.detachevent( "on" +type, obj["e"+type+fn] ); obj["e"+type+fn] = null; } };
3.阻止事件(包括冒泡和默认行为)
var stopevent = function(e){ e = e || window.event; if(e.preventdefault) { e.preventdefault(); e.stoppropagation(); }else{ e.returnvalue = false; e.cancelbubble = true; } },
仅阻止事件冒泡
var stoppropagation = function(e) { e = e || window.event; if (!+"\v1′) { e.cancelbubble = true; } else { e.stoppropagation(); } }
仅阻止浏览器默认行为
var preventdefault = function(e) { e = e || window.event; if(e.preventdefault) { e.preventdefault(); }else{ e.returnvalue = false; } }
4.取得事件源对象
var geteventtarget = function(e){ e = e || window.event; var target = event.srcelement ? event.srcelement : event.target; return target; }
附:绑定onpropertychange事件
onpropertychange,它在一个元素的属性发生变化的时候触发,一般用在表单元素中捕获其value值改变,它比onchange事件更实时捕获它的改变,不过为微软私有事件。ff大致和它相似的有oninput事件,不过它只针对textfield与textarea的value属性。safari,firefox,chrome与 opera都支持此事件。
var addpropertychangeevent = function (obj,fn) { if(window.activexobject){ obj.onpropertychange = fn; }else{ obj.addeventlistener("input",fn,false); } }