• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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>');
    上一篇:Firefox2中输入框丢失光标bug的解决方法
    下一篇:全国哀悼日网站页面变成灰色的filter方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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