location
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这样的URL的port属性等于8080。
q protocol——URL中使用的协议,即双斜杠(//)之前的部分。例如,http://www.wrox.com中的protocol属性等于http:,ftp://www.wrox.com的protocol属性等于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()方法一样,但它多了一步操作,即从浏览器历史中删除包含脚本的页面,这样就不能通过浏览器的Back和Forward按钮访问它了。你可以自己试试看:
把这个页面载入浏览器中,等它导航到新页面后,再点击Back按钮。
location对象还有个reload()方法,可重新载入当前页面。reload()方法有两种模式,即从浏览器缓存中重载,或从服务器端重载。究竟采用哪种模式由该方法的参数值决定,如果是false,则从缓存中载入,如果是true,则从服务器端载入(如果省略参数,默认值为false)。
因此,要从服务器端重载当前页面,可以使用下面的代码:
要从缓存重载当前页面,可以采用下面两行代码中的任意一行:
reload()方法调用后的代码可能被执行,也可能不被执行,这由网络延迟和系统资源等因素决定。因此,最好把reload()调用放在最后一行。
location对象的最后一个方法是toString(),它仅返回location.href的值。因此,下面两行代码是等价的:
本节采用示例介绍了location对象。记住,location对象是window对象和document对象的属性,所以window.location和document.location互相等价,可以交换使用。