脚本宝典收集整理的这篇文章主要介绍了Firefox返回时Iframe的显示Bug的解决方法,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
<script&nbs
p;ty
PE="text/javascript">//<![CDATA[
if(getCookie('firefoxIfr
ame')){
document.wr
ITe('<p id="addAd"><a
href="cookie.ht
ML">点击这里删除这个iframe</a></p>');
document.write('<iframe h
eight="120" width="300" 
;marginheight="0" mar
ginwidth="0"
frameborder="0" src="nAd
PRe.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="dis
play:none;"></iframe>');
document.write('<p id="addAd"><a href="cookie.html">点击这里增加一个iframe</a></p>');
脚本宝典总结
以上是脚本宝典为你收集整理的Firefox返回时Iframe的显示Bug的解决方法全部内容,希望文章能够帮你解决Firefox返回时Iframe的显示Bug的解决方法所遇到的问题。
如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。