js的location对象
js的location对象
location基础知识
BOM(浏览器对象模型)中最有用的对象之一就是location,它是window对象和document对象的属性。location对象表示载入窗口的URL,此外,它还可以解析URL:
href 设置或返回完整的 URL。
protocol 设置或返回当前 URL 的协议,即双斜杠(//)之前的部分。
host 设置或返回主机名和当前 URL 的端口号。
hostname 设置或返回当前 URL 的主机名。
port 设置或返回当前 URL 的端口号。默认情况下,大多数URL没有端口信息(默认为80端口),所以该属性通常是空白的。像http://cardtest.ffan.com:8070/app/ffanbao/location.html这样的URL的port属性为8070.
pathname 设置或返回当前 URL 的路径部分。
hash 设置或返回从井号 (#) 开始的 URL(锚)。
search 设置或返回从问号 (?) 开始的 URL(查询部分)。
location.origin:协议名、主机名和端口号
例子:http://cardtest.ffan.com:8070/app/ffanbao/location.html?name=78&age=19#89
location.href是最常用的属性,用于获取或设置窗口的URL,改变该属性,就可以跳转到新的页面:
- <script type="text/javascript">
- location.href = "http://www.sunchis.com";
- </script>
上面代码的作用是:打开页面后将会跳转到http://www.sunchis.com的页面。
assign()方法也可实现上述操作:
- <script type="text/javascript">
- location.assign("http://www.sunchis.com");
- </script>
如果不想让包含脚本的页面能从浏览器的历史记录中访问,replace()方法可以做到这一点。replace()方法所做的操作与assign()方法一样,但它多了一步操作,即从浏览器的历史记录中删除了包含脚本的页面,这样就不能通过浏览器的后退按钮和前进按钮来访问它了,assign()方法却可以通过后退按钮来访问上个页面。你可以自己测试一下这段关于replace()方法的代码:
- <html>
- <head>
- <title>不能访问此页面的历史页面</title>
- </head>
- <body>
- <p>测试一下效果,请等待一秒钟……</p>
- <p>然后点击浏览器的“后退按钮”,你会发现什么?</p>
- <script type="text/javascript">
- setTimeout(function(){
- location.replace("http://www.sunchis.com");
- },1000);
- </script>
- </body>
- </html>
location对象还有个reload()方法,可以重新载入当前页面。reload()方法有两种模式,即从浏览器的缓存中重载,或从服务器端重载。究竟采用哪种模式由该方法的参数决定。
false:从缓存中重新载入页面;
true:从服务器重新载入页面;
无参数:从缓存中载入页面,如果参数省略,默认值为false。
注意:
在reload()方法执行后,再其后面的代码可能被执行,也可能不被执行,这由网络延迟和系统资源因素决定。因此,最好把reload()的调用放在代码的最后一行。
文章的一开始就提到location是window对象和document对象的属性,因此,window.location和document.location是等价的,可以交互使用。
location.origin兼容IE (IE11+才有origin属性)
- if (window["context"] == undefined) {
- if (!window.location.origin) {
- window.location.origin = window.location.protocol + "//" + window.location.hostname +
- (window.location.port ? ':' + window.location.port: '');
- }
- window["context"] = location.origin+"/V6.0";
- }
最新文章
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
- 数据结构与算法 Big O 备忘录与现实
- 题目描述: k一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
- CKEditor与CKFinder的配置(ASP.NET环境)
- Socket用法详解
- Oracle 查看表空间的大小及使用情况sql语句
- java中set的交集、差集、并集的简单实现
- 农场阳光 (simpson)
- android 解释dp,px,pt,sp单位
- 实现JavaScript的组成----BOM和DOM
- ant+dbunit 导xml到mysql
- centos安装python gcc sqlite
- php 图像处理类
- MySQL安装后无法用root用户访问的问题
- 为什么大一先要学C语言(面向过程)再学C++或JAVA(面向对象)?
- Dapper, 批量插入,批量更新, 以及in, like
- 十个有意思的Github Page
- 判断浏览器是否支持H5
- MFC程序执行后台操作时不允许操作界面的一种方法
- virtualenv 的使用
热门文章
- js总结(一):javascript的类型:基本类型、对象和数组
- Exact Change(01背包)
- BZOJ 2763: [JLOI2011]飞行路线 【SPFA】
- android中的OnClickListener两种实现方式
- hdu 4049 Tourism Planning [ 状压dp ]
- python学习之 -- 数据序列化
- P1427 小鱼的数字游戏 洛谷
- [转] Oracle数据库维护常用SQL语句集合
- ZOJ 2706 Thermal Death of the Universe (线段树)
- 无限级分类Asp.net Mvc实现