IE6下经典的请求abort问题
作者掉进了一个坑:在IE6下给`a`标签绑定事件来切换验证码图片,但图片总是刷不出来,抓包一看请求状态是**abort**。问题出在IE6对`a`标签的执行顺序上——它先执行`onclick`里的事件处理函数,紧接着就会执行`href`属性定义的跳转。如果你没有在事件里阻止这个默认的跳转行为,浏览器会认为页面即将导航离开,从而把刚才在`onclick`中发起的请求(比如获取验证码的AJAX请求)给强制中止了。 解决办法很直接:在事件处理函数的最后加上`return false;`,或者把`href`属性改成不会跳转的锚点,比如`javascript:void(0)`或`#`。最稳妥的做法是两者结合使用。文章通过这个具体的bug,把IE6下事件流与页面跳转之间的微妙关系讲得很清楚,虽然现在IE6已罕见,但其中关于浏览器默认行为会干扰异步请求的原理,在其他场景下依然值得留意。