SWFaddress2.3在IE6或IE7下的一个bug

 bug原形:

  在IE6或IE7下运行安装了swfaddress2.3的html页面,用查看http请求的工具,发现<body>以下的页面内容会重复加载。

  如图所示:

 reload

 

 把swfaddress-2.3.js,与swfaddress-2.2.js对比,发现一个明显的不同。

 在定义下面这个变量时,2.3版是在body的innerHTML里增加iframe

        var _load = function() {

        if (!_loaded) {
            _loaded = true;

    //IE版本小于8时
            if (_msie && _version < 8) {
                var iframe = '<iframe id="' + ID + '" src="javascript:false;" width="0" height="0"></iframe>';
                _d.body.innerHTML = iframe + _d.body.innerHTML;
                _iframe = _d.getElementById(ID);

               ......

               ......

 而2.3版之前是把iframe作为body的一个新的子节点

   if(_1d.isIE()){

      document.body.appendChild(document.createElement("div")).innerHTML="<iframe "+_45+" src=/""+ (_2c["html"]?_24.replace(//.js(/?.*)?$/,".html")+"?"+_2d():"javascript:false;")+"/"></iframe>";

......

......

 

而IE6,IE7对于innerHTML解析不是很完善,它会重复加载。

所以要解决这个bug,只能仿照2.3版之前那样的写法,把iframe作为一个子节点写在body内容最后。

_d.body.appendChild(document.createElement("div")).innerHTML = iframe ;

bug修改后,如图所示:

修改后

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值