`
小嗷喏
  • 浏览: 52355 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

IE 重载 iframe

    博客分类:
  • JS
阅读更多

   

迁移 http://aikin.me/2014/06/16/ie-iframe-cache/    

 

最近“致力于”调 IE9  、IE10 、 firefox 、 chrome 浏览器对 iframe刷新。 发现在IE浏览器中,有些刷新 iframe 的方法会加载缓存。以下就对一些方法在 IE9 、IE10(以下简称IE)的产生效果介绍一下:

 

    1、对 iframe 的 src 属性重新赋值来实现刷新

$("#iframeId").attr("src", $("#iframeId").attr("src"));

     在 IE 中,使用这个方法后 iframe 没有刷新的效果。iframe反应很平静。

 

    2、location.replace(URL) 方法

 $("#iframeId")[0].contentWindow.location.replace(url);
 或
 document.getElementById("iframeId").contentWindow.location.replace(url);

 注: contentWindow.location.replace === contentWindow.document.location.replace 
       返回值为 true, 也就是两个方法是相同的。

    在W3School对这个方法是这么描述的:(1). replace() 方法可用一个新文档取代当前文档;

                                                                  (2). replace() 方法不会在 History 对象中生成一个新的记录。当使

                                                                        用该方法时,新的 URL 将覆盖 History 对象中的当前记录。

    也就是说该方法通过指定URL替换当前缓存在历史的记录,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL。

    但是在 IE 中使用这个方法和描述的效果。将会用新的 url 内容替换掉当前的历史记录。

    

    3、location.reload(force)方法

 $("#iframeId")[0].contentWindow.location.relaod(true); 
 或
 document.getElementById("iframeId").contentWindow.location.reload(true);

 注: contentWindow.location.reload === contentWindow.document.location.reload 
       返回值为 true, 也就是两个方法是相同的。

   

    该方法用于重新加载当前页面。可选参数:force 是Boolean类型的。

    在W3School上对该方法的描述:  (1). 如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头

                                                               If-Modified-Since 来检测服务器上的文档是否已改变。

                                                         (2). 如果文档已改变,reload() 会再次下载该文档。

                                                         (3). 如果文档未改变,则该方法将从缓存中装载文档。这与用户单击

                                                               浏览器的刷新按钮的效果是完全一样的。

                                                         (4). 如果把该方法的参数设置为 true,那么无论文档的最后修改日期

                                                               是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户

                                                               在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。 

 

    可见这方法才是重载 iframe 的正确方法。在 IE中使用该方法,会重新从服务器获取新的页面,不会加载

缓存。

 

   4、替换缓存

    虽然这个方法可以实现重新从服务器上,获取新的页面,但是它只能获取当前窗口的。当一个 iframe中有两个或两个以上的可以相互跳转的页面,你同时要重新去加载这些页面。这时 reload 方法,就不是很适用了(因为 reload 方法没法同时从服务器上获取多个页面)。

    所以在 IE 中,可以使用 ajax 去GET 这些页面,来替换更新本地的缓存,在刷新 iframe。下面的方法就是用 ajax 去替换本地的缓存的方法。

$.ajax({
    type: "GET",
    url: url,
    dataType: "text",
    beforeSend: function (xmlHttp) {
        xmlHttp.setRequestHeader("If-Modified-Since", "0");
        xmlHttp.setRequestHeader("Cache-Control", "no-cache");
    }
}).done(function () {
    console.log('replace cache ok');
})

 

    If-Modified-Since控制缓存页面时间,在发送HTTP请求时,把浏览器端缓存页面的最后修改时间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。

   Cache-Control 控制是否要进行缓存页面。

分享到:
评论

相关推荐

    [removed].reload 刷新使用分析(去对话框)

    此时可以尝试用`window.open()`重载`iframe`的`src`,如: ```html (document.all.ifrmname.src,'ifrmname','')"> ``` JavaScript在不同浏览器之间的兼容性问题也是开发者经常遇到的挑战。例如,在IE和Mozilla Fire...

    ExtAspNet_v2.3.2_dll

    支持的浏览器: IE 7.0+, Firefox 3.0+, Chrome 2.0+, Opera 9.5+, Safari 3.0+ 注:ExtAspNet基于一些开源的程序ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor。 示例: http://extasp.net/ 开源: ...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    支持的浏览器: IE 7.0+, Firefox 3.0+, Chrome 2.0+, Opera 9.5+, Safari 3.0+ 注:ExtAspNet基于一些开源的程序ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor。 示例: http://extasp.net/ 开源: ...

    无刷新上传_方法二

    它利用了Ajax和IFrame技术,兼容了包括IE在内的多个浏览器。这个库的核心特性包括: 1. **分块上传**:支持大文件分块上传,减小了服务器压力,也提高了用户体验。 2. **进度条显示**:可以实时展示上传进度,提升...

    PHP下ajax跨域的解决方案之window.name实例分析

    `window.name`是浏览器窗口的一个特殊属性,即使页面重载或URL改变,其值仍能保持不变。这一特性使得`window.name`成为跨域数据传输的一种方法。下面我们将通过实例来分析如何利用`window.name`实现跨域通信。 首先...

    Ajax工作原理及优缺点实例解析

    早期的浏览器并不原生支持Ajax功能,开发者通常采用隐藏的iframe(内联框架)来模拟异步效果。随着浏览器技术的发展,现代浏览器如IE7+、Firefox、Chrome、Safari以及Opera等,都提供了对Ajax的原生支持。 #### 二...

    DWZ框架的一些用法

    DWZ框架兼容主流的浏览器,包括IE6+、Firefox、Chrome等,并且通过优化代码和利用jQuery的优势,保证了在各种环境下都能有良好的性能表现。 以上是DWZ框架的部分核心特性,通过学习和掌握这些用法,开发者可以高效...

    javascript Ajax获取远程url的返回判断

    提供的描述中提到了其他可能相关的JavaScript技术,如JS远程获取网页源代码、jQuery的`$.getJSON`用于获取JSON数据、获取页面CSS样式表属性值,以及页面重载和iframe操作等,这些都是JavaScript在实际开发中常见的...

    常用js代码超级实用.pdf

    27. **防止点击空链接**:通过自定义事件处理函数避免页面重载,如 `a href="javascript:void(0)" onclick=yourFunction()`。 28. **上一网页源**:`reqst.servervariables("HTTP_REFERER")`(ASP)和 `document....

    JavaScript基础和实例代码

    7.6.3 使用reload()方法重载页面 7.7 Frame对象 7.7.1 框架集文档中对象的结构 7.7.2 控制指定的框架 7.7.3 常见属性和方法汇总 7.7.4 Frameset对象 7.7.5 iframe元素对象 7.8 Document对象 7.9 本章小结 第8章 ...

    源文件程序天下JAVASCRIPT实例自学手册

    7.6.3 使用reload()方法重载页面 7.7 Frame对象 7.7.1 框架集文档中对象的结构 7.7.2 控制指定的框架 7.7.3 常见属性和方法汇总 7.7.4 Frameset对象 7.7.5 iframe元素对象 7.8 Document对象 7.9 本章小结 第8章 ...

Global site tag (gtag.js) - Google Analytics