你的位置:快乐忆站 \ 前端 \ 文章正文

IE6下a标签发ajax请求的深坑

首先感慨下,这真的是个深坑啊,找了一下午才找到原因和解决方案,问题的定位应该是IE6的bug,可是他老爹一直未修复,现在他老爹也已经不管他了,所以修复bug是不可能了,只能想办法避免这个bug。可能我还太年轻吧,据说这个bug已经是业界的基本常识了,可是我却只能在踩到坑后才知道,不过还是要记录下,以免下次再踩坑。

忘了说了此坑还有一个前提就是,必须是手动触发ajax请求时才会产生,且a的href为‘javascript:;’或‘javascript:void(0);’。

先看个DEMO,注意用IE6打开,不然看不到效果。

分别点击两个链接,IE6下得到的结果是不一样的,但是其实差别就在一句代码,一句看似不需要的代码。先分析下现象吧,两次点击,请求截图如下:

两次分别发出的请求

很明显,第一次的请求前面有个警告图标,说明请求有问题,在来看看请求详情:

请求头为空 请求头正常

对比一下就知道,第一个请求根本没法出去,直接被浏览器给“拦截”了。我找了下往上的原因,大意就是“IE6中a标签执行顺序引起这个问题,IE6中a标签执行onclick在执行默认事件(即href跳转)之前,当触发了绑定的事件之后,那么处理完事件之后,如果不return false或者阻止默认事件,则会继续执行href跳转,IE6会认为页面跳转到其他页面或者页面重新刷新,则abort之前onclick事件中的请求。”,那么解决办法也就很明显了,在a标签执行onclick后阻止默认行为就能轻松解决这个问题。

好吧,此坑填完,舒畅!

(此文通过emlog自动发布插件发布)

« 上一篇

说两句吧:

*

*

正在回复: 取消

  1. 15#
    杜甫的诗
    杜甫的诗 Firefox 34.0 Windows 7 2016-08-15 21:32 回复
    IE6,现在算是真正淘汰了,市场占有率不到2%
  2. 14#
    长相思
    长相思 uBrowser 3.0.947.0 Windows 7 2014-09-25 06:00 回复
    有wordpress还用emblog
  3. 13#
    厦门心佳馨
    厦门心佳馨 Google Chrome 31.0.1650.63 Windows 7 2014-09-24 14:43 回复
    看起来顺序还是很重要的
  4. 12#
    成人用品
    成人用品 Firefox 32.0 Windows 8.1 x64 Edition 2014-09-07 16:17 回复
    打酱油了路过
  5. 11#
    chrishao
    chrishao Chromium 27.0.1453.6 Ubuntu 13.04 x64 2013-12-27 20:56 回复
    学习,准备转前端了
  6. 10#
    爱软儿
    爱软儿 Firefox 25.0 Windows 7 x64 Edition 2013-11-12 10:01 回复
    不懂技术的路过
  7. 9#
    wmtimes
    wmtimes Google Chrome 28.0.1500.95 Windows 7 2013-09-04 15:32 回复
    有多深,我回来了。
    小松
    小松 Google Chrome 29.0.1547.62 Windows 8 x64 Edition 2013-09-04 15:40 回复
    @wmtimes:深不见底啊
  8. 8#
    2nd丶骨頭
    2nd丶骨頭 Google Chrome 21.0.1180.92 Windows 8 2013-09-03 19:12 回复
    学习了,虽然我们公司已经抛弃IE6了~
    小松
    小松 Google Chrome 29.0.1547.57 Mac OS X 10.8.5 2013-09-03 20:39 回复
    @2nd丶骨頭:抛弃IE6的公司都是好公司啊,前端一定要珍惜。。。
    2nd丶骨頭
    2nd丶骨頭 Google Chrome 21.0.1180.92 Windows 7 x64 Edition 2013-09-04 09:38 回复
    @小松:我会告诉你,我们连IE7都抛弃了么。。。
    小松
    小松 Google Chrome 29.0.1547.57 Mac OS X 10.8.5 2013-09-04 09:55 回复
    @2nd丶骨頭:个人已经把IE10以下的全抛弃了。。。
  9. 7#
    随缘
    随缘 Firefox 22.0 Windows XP 2013-09-01 16:01 回复
    不懂技术的飘过
    小松
    小松 Mobile Google Chrome  iPhone iOS 6.1.2 2013-09-01 19:49 回复
    @随缘:哈哈,你那些电脑技术也是技术啊!
  10. 6#
    浮夸
    浮夸 Google Chrome 21.0.1180.60 Windows 7 2013-08-31 09:06 回复
    直接让用户升级浏览器啦!
    小松
    小松 Google Chrome 29.0.1547.57 Mac OS X 10.8.5 2013-08-31 09:35 回复
    @浮夸:国内有几个大网站会这么做?这么做就会面临用户的丢失
1 2

随机日志:

推荐日志:

彩色标签:

sitemap