参考博客
http://blog.csdn.net/wksnm0724/article/details/37872787
http://my.oschina.net/justdo/blog/118391
一:用法
使用栗子:
console.log(location.hash);//输出hash值
location.hash="#part2";//输入hash值
if (top.location == self.location)//禁止顶层引用
/**
* 判断当前location 是否为顶层来禁止frame引用
* 如果页面当中有自定义的frame的话,也可以将parent self top换为自定义frame的名称
* 效果就是在自定义frame窗口打开url地址
*/
除了可以写url以外还能跳转到某个锚点如:
location.href = "http://www.yahoo.com/";
location.href = "#page";
*.location.href 不同的点:
top.location.href=”url” 在顶层页面打开url(跳出框架) window.location.href="url" 仅在本页面打开url地址
self.location.href=”url” 同上本页
this.location.href=”url” 同上本页 parent.location.href=”url” 在父窗口打开Url地址
二:原理
Location 对象特点
1、存储在 Window 对象的 Location 属性中,可通过 window.location 属性来访问。
2、它的 href 属性存放的是文档的完整 URL,其他属性描述了 URL 的各个部分,每个部分可以分别修改,这样新url可以只有部分与原来的 URL 不同。如:
(1)设置 hash 属性,那么浏览器就会转移到当前文档中的一个指定的位置。
(2)设置 search 属性,那么浏览器就会重新装载附加了新的查询字符串的 URL。
3、当 Location 对象被转换成字符串,href 属性的值被返回。即可以用表达式 location 来替代 location.href。
4、 Anchor 对象表示的是文档中的超链接,Location 对象表示的却是浏览器当前显示的文档的 URL(或位置)。
5、Location 对象的 reload() 方法可以重新装载当前文档,replace() 可以装载一个新文档而不为它创建一个新的历史记录。
1、Location 对象属性
属性 | 描述 |
---|---|
hash | 设置或返回从井号 (#) 开始的 URL(锚)。 |
host | 设置或返回主机名和当前 URL 的端口号。 |
hostname | 设置或返回当前 URL 的主机名。 |
href | 设置或返回完整的 URL。 |
pathname | 设置或返回当前 URL 的路径部分。 |
port | 设置或返回当前 URL 的端口号。 |
protocol | 设置或返回当前 URL 的协议。 |
search | 设置或返回从问号 (?) 开始的 URL(查询部分)。 |
reload() - 促使浏览器重新下载当前的页面,也就是“刷新”当前页面了。
replace(URL) - 促使浏览器根据 URL 参数中给出的地址 (URL) 下载页面,同时在当前浏览器存储的历史记录 (即所浏览过的页面的列表) 中使用新的地址(即此方法中的 URL 参数) 覆盖当前的页面。
使用 replace() 方法意味着用户将不能通过按 “返回” 按钮回到前边浏览过的那个页面,但这并不是说用户完全不能回到原来的所有页面,他们只不过是无法回到被 replace() 方法替换的那一个页面 (注意:只是被替换的那一个页面)。
replace(URL) - 促使浏览器根据 URL 参数中给出的地址 (URL) 下载页面,同时在当前浏览器存储的历史记录 (即所浏览过的页面的列表) 中使用新的地址(即此方法中的 URL 参数) 覆盖当前的页面。
使用 replace() 方法意味着用户将不能通过按 “返回” 按钮回到前边浏览过的那个页面,但这并不是说用户完全不能回到原来的所有页面,他们只不过是无法回到被 replace() 方法替换的那一个页面 (注意:只是被替换的那一个页面)。