首页 > 稀奇古怪的冷知识

location.reload?window.location.reload()用法

js中location.reload可以跨页面传值么

location.reload方法是重新加载页面,这个相当于你按键盘的 F5键,是不能带参数的。

按你说的意思,功能本身是可以实现的,但不是使用 location.reload,而且是有前提条件的。

浏览器为了安全起见,是不能*作地址不同源的 iframe标签里的内容的,只能对同源地址的iframe进行*作,什么是同源,如果你不了解,请先搜索一下”同源策略“,简单来说就是 iframe标签所引入的页面,必须跟你的主页面是同一个网站中的页面。

如果你上面的效果满足上述前提,也就是 iframe中引入的页面跟主页面都是你自己写的,而且是同一个网站,那么实现的大概思路是这样的:

1,点击主页面的查询,将数据显示在 iframe页面里。

就是在主页面中发起查询请求,然后在iframe页面中显示查询结果。这里需要js配合,有两种实现方式,一是通过地址栏传递参数,另一种是直接用 js硬写入 iframe页面中。如果是通过地址栏传递参数,在点击主页面的查询之后,在js中使用 iframe.src='…..html?key1=vaue1&key2=value2'的方式传递给 iframe页面,然后 iframe页面中也需要用 js来处理传递过来的参数,采用 location.search来获取传递过来的所有参数,然后进行分割处理;如果是直接硬写入 iframe页面中,则需要获取到 iframe页面中相应的标签,获取当前页面中的某个元素,是用 document.get…之类的方法,这里的 document就是指当前页面的文档对象,那么获取 iframe,当然得通过 iframe页面的文档对象,获取iframe页面文档对象的方法是 iframe.contentWindow.document(iframe指的是 iframe标签,需要先用js获取到这个标签),获取到指定标签之后,就跟*作当前页面一样写数据了。

2,从iframe子页面中返回数据到主页面中显示,这个跟上面第一步是一样的,也有两种实现思路,也是地址栏传递参数或者硬写,但因为地址栏传参会刷新页面,用户体验不好,所以还是采用硬写入的方式。主页面写数据到iframe标签,需要先获取标签,反过来也是一样的,iframe页面中写数据到主页面,同样需要先获取到主页面中的标签,获取原理相通,先要找到主页面的文档对象,这里需要清楚整体的页面结构,主页面与 iframe页面是直接的父子级关系,还是多层嵌套关系?如果是直接的父子关系,那就是 window.parent.contentWindow.document,如果主页面是最顶层,那就是 window.top.contentWindow.document。

js的location.reload(true)

如果该方法没有规定参数,或者参数是 false,它就会用 HTTP头 If-Modified-Since来检测服务器上的文档是否已改变。如果文档已改变,reload()会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。

如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift健的效果是完全一样。

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

true的效果和按住shift+f5的效果相同 w3school的解释

关于location.reload([true])刷新机制

location.reload,该方法强迫浏览器刷新当前页面。

语法: location.reload([bForceGet])

参数: bForceGet,可选参数,默认为 false,从客户端缓存里取当前页。true,则以 GET方式,从服务端取最新的页面,相当于客户端点击 F5(“刷新”)

location.replace该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。

语法: location.replace(URL)

location.reload()与location.reload(true)没有区别么

有区别,区别如下:

一、功能不同

1、location.reload():用于刷新当前文档。会从缓存获取当前文档。

2、location.reload(true):无论文档的最后修改日期是什么,都会绕过缓存,从服务器上重新下载该文档。

二、效果不同

1、location.reload():类似于浏览器上的刷新页面按钮。

2、location.reload(true):与用户在单击浏览器的刷新按钮时按住 Shift健的效果是完全一样。

三、语法不同

1、location.reload():window.location.reload(),除了给动态语言赋值以外,我们同样可以给静态页面,并使用j*ascript来获得相信应的参数值。

2、location.reload(true):用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符。

参考资料来源:百度百科-window.location

js 页面刷新location.reload和location.replace的区别小结

reload方法,该方法强迫浏览器刷新当前页面。

语法: location.reload([bForceGet])

参数: bForceGet,可选参数,默认为 false,从客户端缓存里取当前页。true,则以 GET方式,从服务端取最新的页面,相当于客户端点击 F5(“刷新”)

replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。

语法: location.replace(URL)

在实际应用的时候,重新刷新页面的时候,我们通常使用: location.reload()或者是 history.go(0)来做。因为这种做法就像是客户端点F5刷新页面,所以页面的method=”post”的时候,会出现“网页过期”的提示。那是因为Session的安全保护机制。可以想到:当调用 location.reload()方法的时候, aspx页面此时在服务端内存里已经存在,因此必定是 IsPostback的。如果有这种应用:我们需要重新加载该页面,也就是说我们期望页面能够在服务端重新被创建,我们期望是 Not IsPostback的。这里,location.replace()就可以完成此任务。被replace的页面每次都在服务端重新生成。你可以这么写: location.replace(location.href)

replace函数在设置URL方面与location的href属性或assign函数完全一样,但是它会删除history对象的地址列表中的URL,从而使go或back等函数无法导航。

本文链接:http://www.okyx8.com/html/87966687.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。