function addEvent(obj,type,fn){
if(obj.addEventListener){
obj.addEventListener(type,fn,false);
}else if(obj.attachEvent){
obj.attachEvent('on'+type,function(){
fn.call(this);
});
}
}
function removeEvent(obj,type,fn){
if(obj.removeEventListener){
obj.removeEventListener(type,fn,false);
}else if(obj.detachEvent){
obj.detachEvent('on'+type,fn);
}
}
function preDef(evt){
var e = evt || window.event;
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue = false;
}
}
//跨浏览器获取目标对象
function getTarget(evt){
if(evt.target){
return evt.target;
}else if(window.event.srcElement){
return window.event.srcElement;
}
}
//跨浏览器获取字符编码
function getCharCode(evt){
var e = evt || window.event;
if(typeof e.charCode == 'number'){
return e.charCode;
}else{
return e.keyCode;
}
}
//inherit()返回了一个继承自原型对象p的属性的新对象
//这里使用ECMAScript 5 中的Object.create()函数(如果存在的话)
//如果不存在Object.create(),则退化使用其他方法;
function inherit(p){
if(p == null) throw TypeError(); //p是一个对象,但不能是null
if(Object.create){ //如果Object.create()存在
return Object.create(p); //直接使用它
}
var t = typeof p; //否则进行进一步检测
if(t !== 'object' && t != 'function') throw TypeError();
function f(){}; //定义一个空构造函数
f.prototype = p; //将其原型属性设置为p
return new f();
}