JS获取地址参数

Posted 白凌玄月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS获取地址参数相关的知识,希望对你有一定的参考价值。

今天碰到获取地址参数的问题,所以总结了一下。

第一种情况:获取地址栏参数

function getUrlParam(name){
    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
    var r = window.location.search.substr(1).match(reg);  //匹配目标参数
    if (r!=null) return unescape(r[2]); return null; //返回参数值
} 

调用的时候直接getUrlParam("参数名")就可以。挺好用,网上基本都是这个方法。

不过这个方法只能获取地址栏的参数,因为window.location.search是一个私有方法:

输入:http://www.js-51.com/news/2012-5/GUANLIRUANJIANYAOBUYAOBAYIYONGXINGFANGZAIZHONGYAOWEIZHI.html?q=all&l=zh-cn#go

1 href
全部URl字符串(在浏览器中就是完整的地址栏)
返回: http://www.js-51.com/news/2012-5/GUANLIRUANJIANYAOBUYAOBAYIYONGXINGFANGZAIZHONGYAOWEIZHI.html?q=all&l=zh-cn#go

2 protocol
URL 的协议部分
返回:http:

3 host
URL 的主机部分
返回:www.js-51.com

4 port
URL 的端口部分
假如采用默认的80端口(即使添加了:80),那么返回值并不是默认的80而是空字符
返回:""

5 pathname
URL 的路径部分(就是文件地址)
返回:/news/2012-5/GUANLIRUANJIANYAOBUYAOBAYIYONGXINGFANGZAIZHONGYAOWEIZHI.html?q=all&l=zh-cn#go

6 search
查询(参数)部分
返回:?q=all&l=zh-cn

7 hash
锚点
返回:#go 

 

(详细可以查看JS解析url,写的还是比较详细的)

第二种情况:获取地址参数

我碰到这个情况是 获取一个列表元素中的地址,并在模态框中iframe打开这个地址。这时window.location.search就不能用了,所以我略作了修改

function getParam(place,name){
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");  //构造一个含有目标参数的正则表达式对象
    var r = place.substr(place.indexOf("?")+1).match(reg);  //匹配目标参数
    if (r!=null) return unescape(r[2]); return null; //返回参数值
} 

这样就可以获取任意位置的类似地址栏的参数,使用的时候就getParam("place","name")。

place就是想要获取的地址,eg:

var val = $(this).find("a").attr("value");
var id = getParam(val,"id");
console.log(id)

如果想要获取地址栏的参数,place参数可以写window.location.href或者window.location.search就是上面列出的几个。

 

以上就是这次的总结,欢迎大家交流、使用,有更好的方法欢迎讨论~

以上是关于JS获取地址参数的主要内容,如果未能解决你的问题,请参考以下文章

JS获取地址栏url参数

js获取url地址里的数据

js获取url参数 如何改变当前页面内某个图片的地址?

js url参数解析获取

js获取url地址里?后边的数据

js如何获取地址栏的参数