在ITOO5.0项目JSP中使用了Location 对象来实现页面的跳转,在使用中有些困惑,就查了一些资料。Location 对象是 window 对象的一部分,可通过indow.Location 属性对其进行访问,该对象有八个属性,三个方法。项目中我用到了herf属性,reload和replace方法,接下来我们详细了解一下。
属性
描述
hash
返回一个URL的锚部分
host
返回一个URL的主机名和端口
hostname
返回URL的主机名
href
返回完整的URL
pathname
返回URL路径名
port
返回一个URL服务器使用的端口号
protocol
返回一个URL协议
search
返回一个URL的查询部分
方法
说明
assign()
载入一个新的文档
reload()
重新载入当前文档
replace()
用新的文档替换当前文档
window.location.href
window.location.href=“url”:改变url地址
window.location.replace( )window.location.replace(“url”):将地址替换成新url,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后 退”来访问已经被替换的URL,这个特点对于做一些过渡页面非常有用!在实际应用的时候,重新刷新页面的时候,我们通常使用: location.reload() 或者是 history.go(0) 来做。因为这种做法就像是客户端点F5刷新页面,所以页面的method="post"的时候,会出现“网页过期”的提示。那是因为Session的安全保护机制。可以想到: 当调用 location.reload() 方法的时候, aspx页面此时在服务端内存里已经存在, 因此必定是 IsPostback 的。如果有这种应用: 我们需要重新加载该页面,也就是说我们期望页面能够在服务端重新被创建, 我们期望是 Not IsPostback 的。这里,location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。
window.location.reload( )window.location.reload():强制刷新页面,从服务器重新请求!
应用实例有三个jsp页面分别为A.jsp,B.jsp,C.jsp,先进系统A.jsp ,然后进入B.jsp的时候,从B.jsp里进入C.jsp使用两种方式跳转:window.location.replace("C.jsp")与window.location.href("C.jsp");从用户界面来看是没有什么区别的,但是当C.jsp页面有一个“返回”按钮,调用window.history.Go(-1);wondow.history.back()想向B.jsp页面返回的话,区别就能看出来了。
当B.jsp使用window.location.replace("C.jsp")跳转后;在C.jsp页面中的调用window.history.go(-1),会返回到A.jsp 。
当B.jsp使用window.location.href("C.jsp")跳转后;在C.jsp页面中的调用window.history.go(-1),会返回到B.jsp 。
因为window.location.replace("C.jsp")是不向服务器发送请求的跳转,而window.history.go(-1);wondow.history.back();方法是根据服务器记录的请求决定该跳到哪个页面的,所以会跳到系统默认页面A.jsp 。 window.location.href("C.jsp");是向服务器发送请求的跳转,window.history.go(-1);wondow.history.back();方法是根据服务器记录的请求决定该跳到哪个页面的,所以就可以返回到B.jsp。
不总结不知道,总结了印象才深刻。
