Location 對(duì)象包含有關(guān)當(dāng)前 URL 的信息
Location 對(duì)象是 Window 對(duì)象的一個(gè)部分莹桅,可通過 window.location 屬性來訪問。
屬性 | 說明 |
---|---|
hash | 設(shè)置或返回從井號(hào) (#) 開始的 URL(錨)递览。 |
host | 設(shè)置或返回主機(jī)名和當(dāng)前 URL 的端口號(hào)。 |
hostname | 設(shè)置或返回當(dāng)前 URL 的主機(jī)名。 |
href | 設(shè)置或返回完整的URL |
pathname | 設(shè)置或返回當(dāng)前URL的路徑部分 |
port | 設(shè)置或返回當(dāng)前URL的端口號(hào) |
protocol | 設(shè)置或返回當(dāng)前URL的協(xié)議 |
search | 設(shè)置或返回從問號(hào)(?)開始的URL(查詢部分) |
javascript實(shí)現(xiàn)
用JS獲取地址欄參數(shù)的方法:
function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
//search,查詢甸祭?后面的參數(shù)设联,并匹配正則
var r = window.location.search.substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;
}
// 調(diào)用方法
alert(GetQueryString("參數(shù)名1"));
alert(GetQueryString("參數(shù)名2"));
alert(GetQueryString("參數(shù)名3"));
下面舉一個(gè)例子:
若地址欄URL為:abc.html?id=123&url=http://www.maidq.com
那么善已,但你用上面的方法去調(diào)用:alert(GetQueryString("url"));
則會(huì)彈出一個(gè)對(duì)話框:內(nèi)容就是 http://www.maidq.com
如果用:alert(GetQueryString("id"));那么彈出的內(nèi)容就是 123 ;
當(dāng)然如果你沒有傳參數(shù)的話离例,比如你的地址是 abc.html 后面沒有參數(shù)换团,那強(qiáng)行輸出調(diào)用結(jié)果有的時(shí)候會(huì)報(bào)錯(cuò):
所以我們要加一個(gè)判斷 ,判斷我們請(qǐng)求的參數(shù)是否為空粘招,首先把值賦給一個(gè)變量:
var myurl=GetQueryString("url");
if(myurl !=null && myurl.toString().length>1)
{
alert(GetQueryString("url"));
}
這樣就不會(huì)報(bào)錯(cuò)了啥寇!
jquery實(shí)現(xiàn)
以下是jquery的實(shí)現(xiàn)方式:
(function($) {
$.extend({
urlGet: function(){
// 把 astr這個(gè)注釋即可
// var astr = 'http://www.123.com/postValue?q=222&sort=orderstartdate+up&csid=1&typeid=8&tagname=35&brandid=38&taskid=40';
var aQuery = window.location.href.split("?"); //取得Get參數(shù)
var aObj = {};
if(aQuery.length > 1) {
var aBuf = aQuery[1].split("&");
for(var i=0, iLoop = aBuf.length; i<iLoop; i++){
var aTmp = aBuf[i].split("="); //分離key與Value
aObj[aTmp[0]] = aTmp[1];
}
}
return aObj;
}
})
調(diào)用:
console.log($.urlGet()) //會(huì)得到一個(gè)例如{a:1}形式的對(duì)象
})(jQuery);