原生JavaScript写法附带兼容性处理:
if (!!window.attachEvent) { //区分浏览器指派事件
document.getElementById("a").attachEvent("onclick",fun,false);
}else{
document.querySelector("#a").addEventListener("click",fun,false);
}
function fun (event) {
//处理event对象的兼容性
var e=event||window.event; //firefox里的event是临时的,不是window下的全局变量
//停止事件冒泡
e.stopPropagation?e.stopPropagation():e.cancelBubble=true; //低版本ie使用cancelBubble属性,其他浏览器使用stopPropagation方法
//阻止浏览器默认行为
e.preventDefault?e.preventDefault():e.returnValue = false; //低版本ie设置returnValue属性,其他浏览器使用preventDefault方法
}
IE8及更低版本的IE,添加事件要使用私有的attachEvent(),也不支持stopPropagation()和preventDefault(),真是毒瘤啊。
如果使用jQuery的话,写起来更加方便,因为jQuery已经做了兼容性处理,我们用w3c标准方法就行了:
$("a").click(function (e) {
e.stopPropagation(); //停止事件冒泡
e.preventDefault(); //阻止浏览器默认行为
return false; //同时停止冒泡和阻止默认行为。
});
注意,jQuery中的return false和原生JavaScript里的return false是有区别的:
原生JavaScript中的return false不会停止冒泡,只会阻止默认行为。但jQuery中的return false会同时停止冒泡和阻止默认行为。
QQbrowser
Android 5.0.2
Google Chrome 45
Windows 7 x64 Edition 每天来一发啊,老师(* ̄ω ̄)
你在想什么,我的意思是你每天发一次贴_(:3」∠)_