unload事件,刷新,顺序,不靠谱
window的unload事件,用起来不靠谱,为什么呢?
我做个测试来说明,在页面unload事件中做一个同步ajax请求,然后刷新页面,我来比较刷新时unload事件和get新页面请求发生的时间顺序,结果如下:
FF:
16:13:48 445766772 get
16:13:48 445766787 unload
unload在get之后
Chrome:
16:36:13 447111240 get
16:36:13 447111274 unload
unload在get之后
IE:
16:33:08 446926865 get
16:33:08 446926842 unload
unload在get之前
Safari:
16:38:08 447226350 get
16:38:08 447226386 unload
unload在get之后
Opera:
16:39:39 447317584 get
没有unload事件
结果是FF,Safari,Chrome竟然unload请求在get请求之后。就只IE符合正常逻辑unload完了再get。Opera索性不支持unload事件。
通过HTTP抓包分析FF是先获得新页面的html然后执行上页面的unload事件,然后开始请求新页面的资源。
如果某些处理依赖unload事件而又讲究顺序的话,那就可能对我们的程序造成问题,所以,unload事件还是尽量不用为好,不靠谱啊!
beforeubload也存在这个情况。