首页 > web前端 > css教程 > 正文

Firefox返回时Iframe的显示Bug的解决方法_经验交流

PHP中文网
发布: 2016-05-16 12:06:00
原创
2098人浏览过

firefox返回时iframe的显示bug的解决方法_经验交流

<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>');
登录后复制

以上就是Firefox返回时Iframe的显示Bug的解决方法_经验交流的内容,更多相关内容请关注PHP中文网(www.php.cn)!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号