当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > Firefox返回时Iframe的显示Bug的解决方法

CSS样式表
验证并修复css错误内容的相关工具
分享3个比较实用的CSS页面框架布局
CSS幻灯片教程:制作高效可维护组件化的CSS代码
网页制作基础知识:html特殊符号
CSS教程:按整洁易懂的结构组织CSS样式
查看和编辑CSS中用到的颜色:CSS Prism
帮助你学习CSS的在线CSS工具网站
CSS网页设计参考:把HTML标记分类
CSS进阶:几个Reset CSS的八卦问题
WEB设计技巧:网页虚线制作方法剖析
WEBJX收集CSS格式化和造型网页高级教程
CSS3教程:在CSS中使用的颜色
学习WEB标准心得:网页重构的思路
轻易创建css导航工具:CSS Tab Designer2
总结学习web标准的十个重要理由
CSS实例教程:CSS制作星级评价的功能
CSS实例教程:纯CSS实现圆角框
多个css、js文件自动合并、压缩
网页设计教程:CSS文字排版技巧大全
Photoshop制作CSS网页制作的背景图

CSS样式表 中的 Firefox返回时Iframe的显示Bug的解决方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 149 ::
收藏到网摘: n/a

一个页面有4个Iframe来显示flash内容,其中第二个iframe的显示是用Javascript控制的,只有当特定的cookie存在时才出现,否则显示普通的文本。 <script type="text/javascript">//<![CDATA[
if(getCookie('firefoxIframe')){
document.write('<p id="addAd"><a href="cookie.html">点击这里删除这个iframe</a></p>');
document.write('<iframe height="120" width="300" marginheight="0" marginwidth="0"
frameborder="0" src="nAdPre.swf"></iframe>');
}else{
document.write('<p id="addAd"><a href="cookie.html">点击这里增加一个iframe</a></p>');
}
//]]></script>
打开Bug演示,由于cookie不存在,显示的三个flash都是通过Iframe实现的
点击“点击这里增加一个iframe广告”,跳转到一个新的页面写入名为firefoxIframe的Cookie
点击“返回”或者浏览器的返回按钮,回到Bug演示页面,发现iframe里面的flash错位,即位置2的iframe链接的flash并没有载入,显示的是位置3的flash,位置3的显示的是位置4的flash,位置4的flash却依旧存在。
关闭标签页(不是关闭整个浏览器,如果关闭整个浏览器Cookie也失效)或新打开一个标签页重新载入该页面,4个Iframe正常显示4个flash
此时如果点击“点击这里删除这个iframe广告”,跳转到新页面删除Cookie,返回也发现Iframe中的flash错位
如果写入Cookie或者删除Cookie时,不通过浏览器的返回,直接通过网址访问,则不会出现错位
简单分析和解决方案
似乎Firefox返回时,Javascript重新执行了,但是Iframe并未依据src属性重新载入,而是给Iframe和src以类似编号似的配对,而由于返回时Javascript的执行,导致Iframe多了一个(或少了一个),这就导致后面的配对错位。
以上仅为猜测,但这的确是Firefox(2.0.0.3)的一个bug,IE返回时Javascript重新执行,并且Iframe的依据src重新载入,Opera返回时Javascript不重新执行,页面没有变化。
解决方案是在文本中增加一个隐藏的Iframe来占位,上面代码修改如下代码如下:
document.write('<p id="addAd"><a href="cookie.html">点击这里增加一个iframe</a></p>');
//把上面的代码修改成为
document.write('<iframe src="#" style="display:none;"></iframe>');
document.write('<p id="addAd"><a href="cookie.html">点击这里增加一个iframe</a></p>');