//?跨瀏覽器兼容的事件處理程序(能力檢測)
//?兼容性處理封裝在eventshiv對象的眾多方法中
//?如:eventshiv.addHandler(btn,?'click',?f1);
var?eventshiv?=?{
????//?event兼容
????getEvent?:?function?(event)?{
????????return?event??event?:?window.event;
????},
????//?type兼容
????getType?:?function?(event)?{
????????return?event.type;
????},
????//?target兼容
????getTarget?:?function?(event)?{
????????return?event.target??event.target?:?event.srcElement;
????},
????//?添加事件句柄
????addHandler?:?function?(element,type,listener)?{
????????if?(element.addEventListener)?{
????????????//?2級?DOM
????????????element.addEventListener(type,?listener,?false);
????????}?else?if?(element.attachEvent)?{
????????????//?IE
????????????element.attachEvent('on'?+?type,?listener);
????????}?else?{
????????????//?0級?DOM
????????????//?element.onclick?===?element['onclick']
????????????//?在這里由于.與'on'字符串不能鏈接,只能用后者
????????????element['on'?+?type]?=?listener;
????????}
????},
????//?移除事件句柄
????removeHandler?:?function?(element,type,listener)?{
????????if?(element.removeEventListener)?{
????????????//?2級?DOM
????????????element.removeEventListener(type,?listener,?false);
????????}?else?if?(element.detachEvent)?{
????????????//?IE
????????????element.detachEvent('on'?+?type,?listener);
????????}?else?{
????????????//?0級?DOM
????????????//?element.onclick?===?element['onclick']
????????????//?在這里由于.與'on'字符串不能鏈接,只能用后者
????????????element['on'?+?type]?=?null;
????????}
????},
????//?取消默認行為
????preventDefault?:?function?(event)?{
????????if?(event.preventDefault)?{
????????????//?非IE
????????????event.preventDefault();
????????}?else?{
????????????//?IE
????????????event.returnValue?=?false;
????????}
????},
????//?阻止事件冒泡
????stopPropagation?:?function?(event)?{
????????if?(event.stopPropagation)?{
????????????//?非IE
????????????event.stopPropagation();
????????}?else?{
????????????//?IE
????????????event.cancelBubble?=?true;
????????}
????}
}
console.log('eventshiv.js?文件加載成功!');
2016-12-16
你好,jQuery可以很好地處理兼容性