手机
当前位置:查字典教程网 >网页设计 > Div+Css教程 >Firefox返回时Iframe的显示Bug的解决方法
Firefox返回时Iframe的显示Bug的解决方法
摘要://if(getCookie('firefoxIframe')){document.write('点击这里删除这个iframe');docu...

<scripttype="text/javascript">//<![CDATA[

if(getCookie('firefoxIframe')){

document.write('<pid="addAd"><ahref="cookie.html">点击这里删除这个iframe</a></p>');

document.write('<iframeheight="120"width="300"marginheight="0"marginwidth="0"

frameborder="0"src="nAdPre.swf"></iframe>');

}else{

document.write('<pid="addAd"><ahref="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('<pid="addAd"><ahref="cookie.html">点击这里增加一个iframe</a></p>');

//把上面的代码修改成为

document.write('<iframesrc="#"style="display:none;"></iframe>');

document.write('<pid="addAd"><ahref="cookie.html">点击这里增加一个iframe</a></p>');

【Firefox返回时Iframe的显示Bug的解决方法】相关文章:

CSS在IE与Firefox下的兼容性

Ext Grid控件的配置与方法

firefox中div+css的外层背景色不见的解决方法

让div旋转一定的角度方法

CSS隐藏文字的方法

修复网页在IE8下的显示兼容问题

IE6下图片下方有空间距的多种解决方法

div标签中的元素margin-top失效的解决方法

清除行内元素之间HTML空白的几种解决方案

使用css的background:url设置背景图方法

精品推荐
分类导航