您的位置:首页 > Web前端

编程血泪史之前端

2016-03-19 22:49 232 查看
2016.3.18

绑定函数在同类事件之前执行

  在优化前端性能时,突发奇想,想对不常使用的控件先不加载数据,在需要时再获取数据。比如,对于一个表格的过滤框、一些需要从后台取固定参数的选项框,在页面加载时不获取数据,当点击时再获取。

  当然,这是一个得不偿失的改进,因为本来对于页面上这些框数据,就是使用ajax异步获取的。砍掉异步,在用户点击时去获取数据,那在数据还没回来时怎么展示?显示空白,还是改同步,锁死页面让用户干等着?这种策略本身不可取,权当教训了。但在考虑实现时,有一点让人感兴趣,点击事件已经存在,如何在同一个dom上新增一个点击事件,且该事件在所有同类事件之前执行?

  jQuery1.8之前,使用
$.data($('#id')[0],'events').click
来获取所有id为id的dom上绑定的click事件,这是一个数组,按绑定先后顺序执行,所以直接绑定函数,默认是在最后执行,当然,可以直接调整数组中元素(回调函数)的位置来改变函数执行的顺序。jQuery1.8之后使用
$._data($('#id')[0],'events').click
获取。

  

2016.3.19

累加事件——多次绑定回调函数

  使用SlickGrid绘制表格,发现刷新一次,表格的每条记录都会累加,比上次绘制多画几次,多画的次数为表格的记录总数。比如,表格中有2条记录,第一次每一条记录被重画2次;刷新并重新获取数据后每条记录被重画4次,然后是6,8,10…不断累加。

  最初怀疑是数据源dataview的setItems函数中内置重绘,测试后排除。

  怀疑获取数据的回调函数被绑定多次,设置断定,打日志后发现只调用了一次。

  最后发现是使用的update函数有问题,此函数为内部封装的函数,实际作用是给数据源绑定一个监听函数,当数据源的数据变化时会调用此函数,而在代码中使用时却将它作为一个即时的更新函数,每次更新都调用此函数,绑定监听事件,所以会累积的越来越多。可以参考jQuery的bind方法来理解。从中也可以看到普及文档的重要性!乱用函数就是浪费生命,团体杀手!

2016.3.19

页面的返回按钮

  做了一个需求,两个页面都会跳转到同一个子页面,在子页面中返回按钮需返回到进入的页面。

  首先,window.history.back被排除,因为作为一个有追求的程序员,怎么能用这么low的方式,万一人家复制url后,新开一个窗口,再点击一下回退,那不就傻逼了。

  思前想后,最后决定在url上做文章,#viewA&common 与#viewB&common指向同一个页面,#与&之间就是前一个页面的地址,返回时通过window.location.hash取值,以此来跳转。简直是天才,坐等测试童鞋发现什么惊天的bug……

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  前端 编程