昨天写click事件时候突然脑袋抽筋想了想浏览器是怎么执行click事件的,为什么我们可以用e或者window.event这个对象获取一些事件的属性呐?以下是我的理解。如果您有更好的理解,欢迎评论!!!
拿click事件来说把,我们先写个例子。
$("#box").click(function (e) {
console.log(e.type);
});
$("#box").onClick = function(e){console.log(e.pageX)};
那么浏览器是如何把e传进去的呐?我们为什么可以使用e这个对象。并且获取他的一些属性。
首先当浏览器单机的时候第一时间是执行的是你传入进click()方法里边的函数吗?
肯定不是的,事实上是这样的,浏览器执行的是这个click事件
borwser.click = function (fn) {
if (fn) {
fn(event || window.event);
}
}
首先浏览器在执行click事件当中判断你有没有给click方法中传入参数,如果传入了。那么就执行这个函数并且传入一个对象即event,或者window.event。如果没有传入则不执行了