'); }else{ document.write('点击这里增加一个iframe'); } //]]> 打开Bug演示">

成都网站建设

拥有10年以上经验丰富的网站制作团队,具备科学的建站流程和快速的客户服务体系

成都网站建设专家

整合营销专家

短时间、快速度、操作简单、低投入品牌展示率

成都整合营销专家

网站优化推广

包年网站优化,百度自然排名首页,真正实现点击不收费!

成都网站优化推广

主机域名

集群式CDN加速,打开速度快速,利于优化排名

独立IP主机
您当前位置:成都网站建设 >> 新闻频道 >> 成都网站建设 >> 浏览文章

Firefox返回时Iframe的显示Bug的解决方法


时间:2013年01月15日 点击量:
<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>');
文章由四川冠辰成都网站建设http://www.scgckj.com/2526.html编辑整理,转载请注明出处
网站首页| 关于我们| 热门关键词| 付款方式| 资质证书| 联系我们
版权所有 Copyright © 2002-2013 四川冠辰科技开发有限公司www.scgckj.com 保留所有权利 蜀ICP备11012605号
地址:四川省成都市金丰路6号量力钢铁交易大厦B座2010室 冠辰科技资质证书
服务热线:400-000-2367 028-86088588 总机:028-62322623-0 传真:028-62322623-823