前言:复杂的东西简单化,这是处理事物基本逻辑,事件是复杂的,能否把它简单化呢?人生复杂了能否简单化呢?
核心内容:事件模拟以及真正事件的应用
开始了
1.吹牛
2.吹牛
3.勿强求
A:模拟事件
应用场景:需求要触发一个点击事件,又不想通过用户的标准点击事件触发,有种自执行的感觉,在原生js中可以通过new一个event,然后在fire执行事件,记得传入事件类型,jq当中通过trigger传入事件类型,两种都可以传入数据参数,看似简单有效,但是面临复杂功能时就力不从心了,因为数据实在太少了。
B:复杂的事件参数
事件中包含了很多复杂的参数,面对复杂功能就可以加以运用,其中比较有用的参数target事件对象,currtarget当前事件对象,toelement,fromelement,还有鼠标位置包括相对于网页原点位置pageX,pageY,相对当前窗口位置,这个慎用如果通过这个去计算位置时在出现滚动条的情况下要考虑滚动条移动,还有屏幕位置这些属性都是常用的。但这些位置真的有用吗?这就要看你思维的纬度有多高了,可以想象这样一个场景,如果是一个购物网站,不管是移动端还是PC我都记录一个用户的所有鼠标位置,是不是可以这样推断,根据鼠标的相对于屏幕状态的集中位置就可以知道这个用户的生理状态是不是左撇子,就可以进行相对应的商品推荐,这还是小事。用大数据的视角去看,只要收集的用户行为足够多,算法足够的情况下,在用户完全不知情的点击行为中,可以分析出用户的性格甚至于疾病。
需求决定用法,简单的模拟事件去触发例如原生的拖拽事件的时候传参数和模拟触发都是不太好操作的,一味强求实在太累了。放心执念重新思考,也许真正的事件机制就能解决,也许不能解决,但思考之后的权衡是重要的,有时候已有的方法简单,但不如自定义来得满意,自定义意味着代码量增加考虑情况增加,凡事总有取舍。
清风难化雨,不求,
寒梅易映雪,自开。