获取地址栏参数

13 篇文章 0 订阅
12 篇文章 0 订阅

获取地址栏参数

第一种采用window.location方法

window.location 对象所包含的属性

属性 描述
hash 从井号 (#) 开始的 URL(锚)
host 主机名和当前 URL 的端口号
hostname 当前 URL 的主机名
href 完整的 URL
pathname 当前 URL 的路径部分
port 当前 URL 的端口号
protocol 当前 URL 的协议
search 从问号 (?) 开始的 URL(查询部分)


Location 对象包含有关当前 URL 的信息。Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。

ancestorOrigins: DOMStringList
assign: function () { [native code] }
hash: ""  //锚点
host: "www.baidu.com"
hostname: "www.baidu.com"
href: "http://www.baidu.com/s?wd=location&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&rsv_sug3=7&rsv_sug1=5&rsv_sug4=367&oq=loca&rsp=1&f=3&rsv_sug5=0"
origin: "http://www.baidu.com" 
pathname: "/s"
port: ""  //端口
protocol: "http:"
reload: function () { [native code] }
replace: function () { [native code] }
search: "?wd=location&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&rsv_sug3=7&rsv_sug1=5&rsv_sug4=367&oq=loca&rsp=1&f=3&rsv_sug5=0"
toString: function toString() { [native code] }
valueOf: function valueOf() { [native code] }
__proto__: Location
constructor: function Location() { [native code] }
__proto__: Object


页面跳转

 1 window.location="http://example.com"; 
    2 window.location.href="http://example.com"; 
    3 location="http://example.com"; 
    4 location.href="http://example.com"; 
    5 window.location.assign("http://example.com"); 
    6 window.location.replace("http://example.com");
hash

浏览器iframe的url是否改变地址栏hash值是否改变是否支持
Mozilla Firefox3.0 改变 改变 支持
Google Chrome2.0 改变 改变 支持
IE6 改变 不改变 不支持
IE7 改变 不改变 不支持
IE8 改变 改变 支持

结论:除ie6及以下浏览器、ie7不支持外,其他浏览器都支持hash的“前进”、“后退”功能,同时也发现所有浏览器iframe的url都改变了,这是因为所有浏览器都支持iframe的url缓存,这与hash的缓存不是一个概念,所以排除iframe的url的数据干扰。

replace

复制代码
有3个jsp页面(1.jsp, 2.jsp, 3.jsp),进系统默认的是1.jsp ,当我进入2.jsp的时候, 2.jsp里面用window.location.replace("3.jsp");与用window.location.href("3.jsp");从用户界面来看是没有什么区别的,但是当3.jsp页面有一个「返回」按钮,调用window.history.go(-1);wondow.history.back();方法的时候,一点这个返回按钮就要返回2.jsp页面的话,区别就出来了。 

当用window.location.replace("3.jsp");连到3.jsp页面的话,3.jsp页面中的调用window.history.go(-1);wondow.history.back();方法是不好用的,会返回到1.jsp 。 

当用window.location.href("3.jsp");连到3.jsp页面的话,3.jsp页面中的调用window.history.go(-1);wondow.history.back();方法是好用的,会返回2.jsp。 

因为window.location.replace("3.jsp");是不向服务器发送请求的跳转,而window.history.go(-1);wondow.history.back();方法是根据服务器记录的请求决定该跳到哪个页面的,所以会跳到系统默认页面1.jsp 。 

window.location.href("3.jsp");是向服务器发送请求的跳转,window.history.go(-1); wondow.history.back();方法是根据服务器记录的请求决定该跳到哪个页面的,所以就可以返回到2.jsp。 

以上简单的说,如果使用window.location.replace,使用浏览器上一页的按钮,是不会回到呼叫window.location.replace的那个页面,而是回到window.location.replace呼叫前的那个页面。这个运用在跳页选单中,每按一次下拉式选单,就会使用window.location.replace跳到一个新页面(事实上是同一个页面,只是传值不同而已),如果用window.location.href来做,那么如果你很频繁的使用跳页选单来查询,那么当你按上一页时,看起来都会是回到同一个页面,如果使用window.location.replace的话,那么按上一页,看起来才象是回到上个页面中。 
复制代码

 

 window.location 和 document.location 的区别

window.location is read/write on all compliant browsers.
document.location is read-only in Internet Explorer (at least), but read/write in Gecko-based browsers (Firefox, SeaMonkey).




第二种方法:
// 采用正则表达式获取地址栏参数
// 但是在使用的过程中,发现其在获取中文参数的时候,获取到的值是乱码的
// 解决办法:将解码方式unscape换为decodeURI
// 原因:浏览器会将url中的中文参数进行encodeURI编码,所以要通过js使用decodeURI进行解码
function GetQueryString( name){
var reg = new RegExp( "(^|&)"+ name + "=([^&]*)(&|$)");
var r = window. location. search. substr( 1). match( reg);
if( r!= null) return decodeURI( r[ 2]); return null;
}

调用方法: GetQueryString ( name );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值