每次接触到window.location的时候都只会用一些简单的,并不能知道其真正的含义,今天就来好好总结一下吧....
1.location.hash?
location.hash指的是#后面的锚部分,返回的值是包含#的,也可以利用location.hash = '456'或者location.hash = '#456'来设置链接的锚部分的值,和下面的lcoation.search一样,也是不能跨域获取和设置的
2.location.host?
location.host指的是获取链接当中的主机名及端口号,如百度的获取到的是www.baidu.com,当然也可以使用location.host = 'localhost:3000'来设置url中的主机名和端口号(设置了之后可能会引起页面的跳转噢)
3.location.hostname?
location.hostname指的是获取url中的主机名,如:'localhost:3000'获取的就是localhost,当然也可以使用location.hostname = 'www.baidu.com'来设置主机名(注意设置了之后可能会引起页面的跳转)
4.location.href?
location.href指的是获取页面的完整的url,通过给location.href设置值,可以实现页面跳转,如location.href = 'http://www.baidu.com'跳转到百度页面
在嵌入iframe标签的时候,如果在iframe页面中使用的是self.location.href = ***(注意location.href和这个效果一样),是将iframe窗口的页面做跳转,如果使用top.location.href = ***,是将iframe的顶级窗口的页面做跳转,如果使用parent.location.href = ***,是将iframe的上一级窗口做跳转
经过试验,在iframe页面和父页面及顶层页面不是一个域中,如果使用top.location.href和parent.location.href也是可以使相应的页面跳转的,还发现一个有趣的事情,在页面一加载进来就跳转了页面(采用location.href或者其他),竟然没有浏览器的返回按钮,如果采用的点击事件的方式,浏览器是有跳转按钮的
虽然在iframe页面中,可以让上一级页面跳转,但是在不同域的情况下,想获得上一级页面的url的地址信息是获取不到的,因为跨域了
此处要引出一个知识点localStorage是否也有这样的top,parent的方法呢?
经过验证是不行的,跨域了,所以localStorage等一定要是同源的啊
注意使用location.href的时候可以使用绝对路径,也可以使用相对路径,还可以使用根路径,如location.href = '/index.html','/'就表示到根路径下面
5.location.pathname?
location.pathname指的是获取url的路径部分,如http://localhost:8080/jquery/jquery.html,获得的是/jquery/jquery.html(记得前面有斜杠噢),也可以设置哦,设置后页面会跳转,记得设置的时候要和得到这个值的时候一样,设置成/jquery/***.html不能设置成相对路径和绝对路径等
6.location.port?
location.port指的是返回当前页面的端口号,如上面的url链接当中返回的是8080,也可以设置端口,也会实现页面的跳转
7.location.protocol?
location.protocol是指获取页面的协议,如http://localhost:8080/jquery/jquery.html获取的是http:(记得有:噢),也可以设置,设置的时候尽量也带冒号(虽然不带对使用没有影响),如果设置成https:,发现是可以跳转的(只是会提示不安全)
8.location.search?
location.search只是获取页面?后面的部分(包含问号),如果设置location.search = '123'或者location.search = '?123'(建议采用这种写法),是设置问号后面的参数,是整个替换噢,并不是添加,如果在子iframe里面,跨域设置父页面的?后面,是设置不了的,会报跨域的错误,同样获取也是获取不到的,同源的是可以设置的,注意,如果后面有#,就到#前为止
9.location.assign()?
location.assign(url)是指加载一个新的文档,和location.href一样,是可以设置相对路径、绝对路径、根路径的,百度上面看到很多说法,有说location.assign跳转的页面,可以点击浏览器后退,后来发现一进入页面就location.assign(url)跳转链接的,浏览器并没有后退按钮,但是如果是在某一个标签上面绑定事件跳转的是有后退按钮的,后来我在想此处说可以后退,是否是指调用history.go(-1),可以后退,后来发现也是要点击的调用这个方法可以后退,一进入这个页面的,并不能后退,当加入一个定时器是可以返回的
10.location.reload()?
location.reload(参数),刷新当前页面,浏览器是没有后退按钮的,当没有参数或者参数为false的时候,浏览器会利用HTTP的If-Modified-Since来检测服务器的文档是否改变了,如果没有改变,就会重缓存中读取文件,如果改变了就会重新下载文件,如果参数为true,都会直接在浏览器上面下载该文件
11.location.replace(url)?
location.replace(url)是指用新文档替换当前文档里面的内容,url也可以是相对路径,绝对路径和根路径,使用location.replace(url)是没有后退按钮的,不管哪种情况