浇灌的园子

要像一棵树栽在溪水边,按时候结果子,叶子也不枯干。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Location 对象包含有关当前 URL 的信息。Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。

 1 ancestorOrigins: DOMStringList
 2 assign: function () { [native code] }
 3 hash: ""  //锚点
 4 host: "www.baidu.com"
 5 hostname: "www.baidu.com"
 6 href: "http://www.baidu.com/s?wd=location&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&rsv_sug3=7&rsv_sug1=5&rsv_sug4=367&oq=loca&rsp=1&f=3&rsv_sug5=0"
 7 origin: "http://www.baidu.com" 
 8 pathname: "/s"
 9 port: ""  //端口
10 protocol: "http:"
11 reload: function () { [native code] }
12 replace: function () { [native code] }
13 search: "?wd=location&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&rsv_sug3=7&rsv_sug1=5&rsv_sug4=367&oq=loca&rsp=1&f=3&rsv_sug5=0"
14 toString: function toString() { [native code] }
15 valueOf: function valueOf() { [native code] }
16 __proto__: Location
17 constructor: function Location() { [native code] }
18 __proto__: Object

 

页面跳转

1 window.location="http://example.com"; 
2 window.location.href="http://example.com"; 
3 location="http://example.com"; 
4 location.href="http://example.com"; 
5 window.location.assign("http://example.com"); 
6 window.location.replace("http://example.com");

 

hash

浏览器iframe的url是否改变地址栏hash值是否改变是否支持
Mozilla Firefox3.0 改变 改变 支持
Google Chrome2.0 改变 改变 支持
IE6 改变 不改变 不支持
IE7 改变 不改变 不支持
IE8 改变 改变 支持

结论:除ie6及以下浏览器、ie7不支持外,其他浏览器都支持hash的“前进”、“后退”功能,同时也发现所有浏览器iframe的url都改变了,这是因为所有浏览器都支持iframe的url缓存,这与hash的缓存不是一个概念,所以排除iframe的url的数据干扰。

 

replace

有3个jsp页面(1.jsp, 2.jsp, 3.jsp),进系统默认的是1.jsp ,当我进入2.jsp的时候, 2.jsp里面用window.location.replace("3.jsp");与用window.location.href("3.jsp");从用户界面来看是没有什么区别的,但是当3.jsp页面有一个「返回」按钮,调用window.history.go(-1);wondow.history.back();方法的时候,一点这个返回按钮就要返回2.jsp页面的话,区别就出来了。 

当用window.location.replace("3.jsp");连到3.jsp页面的话,3.jsp页面中的调用window.history.go(-1);wondow.history.back();方法是不好用的,会返回到1.jsp 。 

当用window.location.href("3.jsp");连到3.jsp页面的话,3.jsp页面中的调用window.history.go(-1);wondow.history.back();方法是好用的,会返回2.jsp。 

因为window.location.replace("3.jsp");是不向服务器发送请求的跳转,而window.history.go(-1);wondow.history.back();方法是根据服务器记录的请求决定该跳到哪个页面的,所以会跳到系统默认页面1.jsp 。 

window.location.href("3.jsp");是向服务器发送请求的跳转,window.history.go(-1); wondow.history.back();方法是根据服务器记录的请求决定该跳到哪个页面的,所以就可以返回到2.jsp。 

以上简单的说,如果使用window.location.replace,使用浏览器上一页的按钮,是不会回到呼叫window.location.replace的那个页面,而是回到window.location.replace呼叫前的那个页面。这个运用在跳页选单中,每按一次下拉式选单,就会使用window.location.replace跳到一个新页面(事实上是同一个页面,只是传值不同而已),如果用window.location.href来做,那么如果你很频繁的使用跳页选单来查询,那么当你按上一页时,看起来都会是回到同一个页面,如果使用window.location.replace的话,那么按上一页,看起来才象是回到上个页面中。 

 

 window.location 和 document.location 的区别

window.location is read/write on all compliant browsers.
document.location is read-only in Internet Explorer (at least), but read/write in Gecko-based browsers (Firefox, SeaMonkey).

 

posted on 2013-08-07 11:49  浇灌的园子  阅读(1312)  评论(0编辑  收藏  举报