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).