IE6下swfobject插flash时base标签问题

IE6下swfobject插flash时base标签问题

最近公司的游戏与腾讯合作做一个抽奖专题,公司的as设计师做了个抽奖的flash并给了个demo页面给腾讯的程序员去套,过程中出现各种问题,然后今天遇到一个比较怪异的,程序反馈说用swfobject插入flash在IE6下打不开页面,报错截图如下:

Internet Explorer无法打开页面,操作被终止

然后我们的设计师妹纸就来跟我反馈了,简单的浏览了下源码貌似没有什么问题,后面发现有人也遇到过一样的问题,问题出在源码的head里有这样一句代码:

XHTML

<base href= »http://这里马赛克了.g.act.qq.com/ » />

按照规范,这样写没什么问题,但是在IE6下用swfobject插入flash会出现上图那样的bug。解决办法也就明了了:

  1. 如非必要,直接去掉base标签
  2. 虽然不符合规范(html4规范中base标签是禁止用</base>闭合标签的),但是可以用</base>来闭合标签解决这个bug,折中的办法可以用条件注释来通过验证
  3. 经测试,在DOMReady后执行插入flash也可以解决

第二种方式的写法如下:

XHTML

<base href= »http://这里马赛克了.g.act.qq.com/ »><!–[if IE]></base><![endif]–>

至于为什么会出现这样的问题,表示不明了,通过这三种解决方案,我的猜测是IE6对未闭合的base标签处理有问题,使得DOM解析变慢,而swfobject在DOM树还没构建完成的时候执行了DOM操作导致bug,求知情者告知,感谢。

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.