location

BOM中最有用的对象之一是location对象,它是window对象和document对象的属性(对此没有什么标准,导致了一些混乱)。location对象表示载入窗口的URL,此外,它还可以解析URL

q  hash——如果URL包含#,该方法将返回该符号之后的内容(例如,http://www.some-
where.com/index#selection1
hash等于"#selection1")。

q  host——服务器的名字(如www.wrox.com)。

q  hostname——通常等于host,有时会省略前面的www

q  href——当前载入的页面的完整URL

q  pathname——URL中主机名后的部分。例如,http://www.somewhere.com/pictures/
index.htm
pathname"/pictures/index.htm"

q  port——URL中声明的请求的端口。默认情况下,大多数URL没有端口信息,所以该属性通常是空白的。像http://www.somewhere.com:8080/index.htm这样的URLport属性等于8080

q  protocol——URL中使用的协议,即双斜杠(//)之前的部分。例如,http://www.wrox.com中的protocol属性等于http:ftp://www.wrox.comprotocol属性等于ftp:

q  search——执行GET请求的URL中的问号(?)后的部分,又称为查询字符串。例如,http://www.somewhere.com/search.htm?term=javascript中的search属性等于
?term=javascript

location.href是最常用的属性,用于获取或设置窗口的URL(在这一点上,它类似于document.URL属性)。改变该属性的值,就可导航到新页面:

采用这种方式导航,新地址将被加到浏览器的历史栈中,放在前一个页面后,意味着Back按钮会导航到调用了该属性的页面。

assign()方法实现的是同样的操作:

这两种方法都可以采用,不过大多数开发者选用location.href属性,因为它更精确地表达了代码的意图。

如果不想让包含脚本的页面能从浏览器历史中访问,可使用replace()方法。该方法所作的操作与assign()方法一样,但它多了一步操作,即从浏览器历史中删除包含脚本的页面,这样就不能通过浏览器的BackForward按钮访问它了。你可以自己试试看:

把这个页面载入浏览器中,等它导航到新页面后,再点击Back按钮。

location对象还有个reload()方法,可重新载入当前页面。reload()方法有两种模式,即从浏览器缓存中重载,或从服务器端重载。究竟采用哪种模式由该方法的参数值决定,如果是false,则从缓存中载入,如果是true,则从服务器端载入(如果省略参数,默认值为false)。

因此,要从服务器端重载当前页面,可以使用下面的代码:

要从缓存重载当前页面,可以采用下面两行代码中的任意一行:

reload()方法调用后的代码可能被执行,也可能不被执行,这由网络延迟和系统资源等因素决定。因此,最好把reload()调用放在最后一行。

location对象的最后一个方法是toString(),它仅返回location.href的值。因此,下面两行代码是等价的:

本节采用示例介绍了location对象。记住,location对象是window对象和document对象的属性,所以window.locationdocument.location互相等价,可以交换使用。

原文地址:https://www.cnblogs.com/zwl12549/p/614089.html