IE6下swfobject插flash时base标签问题

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

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

ie6 crash with flash

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

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

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

第二种方式的写法如下:

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

如需转载,请注明出处:https://i.wanz.im/2012/09/06/swf_object_ie6_crash_problem/

Comments

  1. By zhenn

    回复

    • By 丸子

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.