一个完整的URL地址格式
协议://主机:端口/路径名称#hash标识?搜索条件
location对象:既是window对象的属性,也是document对象的属性。window.location和document.location引用的是同一个对象。
下面是location对象的所有属性(写成window.location. ;也能运行):
//("#contents")返回url中的hash(#号后跟零或多个字符串),如果url中不包含散列,则返回空字符串
location.hash;
//("www.wrox.com:80")返回服务器名称及端口号(如果有)
loaction.host;
//("www.wrox.com")返回服务器名不带端口号
location.hostname;
//返回当前加载页面的完整url 而location对象的toString()方法也返回这个值
location.href;
window.location.toString();
//("/WileyCDA/") 返回url中的目录和(或)文件名
location.pathname;
//("8080")返回url中制定的端口号,如果url中不包含端口号,则这个属性返回空字符串
location.port;
//("http:")返回页面使用的协议,通常是http:或https:
location.protocol;
//("?q=javascript")返回URL的查询字符串。这个字符串以问号开头
location.search;
- 位置操作:通过通过location对象来改变浏览器的位置。这些改变浏览器位置的方法中,最常用的是设置location.href属性
//常用方式,打开新的url并在浏览器的历史记录中生成一条记录
location.assign('http://www.baidu.com');
//等同于上一行代码的功能
window.location = 'http://www.baidu.com';
location.href = 'http://www.baidu.com';
- 更改当前的加载页面还有以下方法。通过将hash, search, hostname, pathname 和port 属性设置为新值来改变url
//假设初始URL为http://www.baidu.com/WileyCDA/
//将URL修改为"http://www.baidu.com/WileyCDA/#section1"
location.hash = '#section1';
//将URL修改为"http://www.baidu.com/WileyCDA/?q=javascript"
location.search = '?q=javascript';
//将URL修改为"http://www.yahoo.com/WileyCDA/"
location.hostname='www.yahoo.com';
//将URL修改为"http://www.yahoo.com/mydir/"
location.pathname='mydir';
//将URL修改为"http://www.yahoo.com:8080/WileyCDA/"
location.port=8080;
每次修改location的属性(hash除外),页面都会以新URL重新加载。
- 可以通过replace()方法禁用后退按钮
//接收的参数为要导航到的url,不会在历史记录中生成新记录。调用replace()方法之后用户不能回到前一个页面,后退按钮处于禁用状态
location.replace("http://www.wrox.com/");
reload()方法也是与位置有关。
重新加载当前显示的页面,如果调用reload()时不传递参数,页面会以最有效的方式重新加载如果页面自上次请求以来并没有改变过,页面就会从浏览器缓存中重新加载,如果需要强制从服务器重新加载,则需要像下面这样为该方法传递参数true
位于reload()调用之后的代码可能会也可能不会执行,这取决于网络延迟,或系统资源等因素。最好将reload()放在代码的最后一行。
//重新加载(有可能从缓存中加载)
location.reload();
//重新加载(从服务器重新加载)
location.reload(true);