您的位置:首页 > 其它

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

2009-08-21 16:18 288 查看
bug原形:

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

  如图所示:

 


把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修改后,如图所示:




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