位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript location 對象

提問人:劉團圓發(fā)布時間:2020-11-26

■知識點

    location對象存儲了與當(dāng)前文檔位置(URL)相關(guān)的信息,簡單地說就是網(wǎng)頁地址字符串。使用window對象的location屬性可以訪問。

    location對象定義了8個屬性,其中7個屬性可以獲取當(dāng)前URL的各部分信息,另一個屬性(href)包含了完整的URL信息,詳細(xì)說明如表所示。為了便于更直觀地理解,表中各個屬性將以下面的URL示例信息為參考進(jìn)行說明。

    http://www.mysite.cn:80/news/index.asp?id=123&name= location#top

屬 性

href

聲明了當(dāng)前顯示文檔的完整URL與其他location屬性只聲明部分URL不同,把該屬性設(shè)置為 新的URL會使瀏覽器讀取并顯示新的URL內(nèi)容

protocol

聲明了 URL的協(xié)議部分,包括后綴的冒號。例如:http:”

host

聲明了當(dāng)前URL中的主機名和端口部分。例如:www.mysite.cn:80”

hostname

聲明了當(dāng)前URL中的主機名。例如:www.mysite.cn

port

聲明了當(dāng)前URL的端口部分。例如: “80”

pathname

聲明了當(dāng)前URL的路徑部分》例如:“ news/index.asp 

search

聲明了當(dāng)前URL的查詢部分,包括前導(dǎo)問號。例如:“?id=123&name=location

hash

聲明了當(dāng)前URL中錨部分,包括前導(dǎo)符(#)。例如:“#top”,指定在文檔中錨記的名稱

使用location對象,結(jié)合字符串方法可以抽取URL中查詢字符串的參數(shù)值。

■實例設(shè)計

下面的示例定義了一個獲取URL査詢字符串參數(shù)值的通用函數(shù),該函數(shù)能夠抽取每個參數(shù)和參數(shù)值,并以名/值對的形式存儲在對象中返回。

var querystring = function () {              //獲取URL査詢字符串參數(shù)值的通用涵數(shù)

    var q = location.search.substring(1);    //獲取査詢字符串,如:“id=123.&nanvd= location” 

    var a = q.split("&");              //以&符號為界把査詢字符串劈開為數(shù)組

    var o = {};                              //定義一個臨時對象

    for( var i = 0; i <a.length; i++)        //遍歷數(shù)組

        var n = a[i].indexOf("=");      //獲取每個參數(shù)中的等號下標(biāo)位置

        if (n == -i) continue;              //如果沒有發(fā)現(xiàn)則跳到下一次循環(huán)繼續(xù)操作

        var vl = a[i].substring(0, n);       //截取等號前的參數(shù)名稱

        var v2 = a[i].substring (n+1);       //截取等號后的參數(shù)值

        o[vl] = unescape (v2);              //以名/值對的形式存儲在對象中

    }

    return o;                              //返回對象

}

調(diào)用該函數(shù),即可獲取URL中的查詢字符串信息,并以對象形式讀取它們的值。

var fl = querystring();              //調(diào)用查詢字符串函數(shù)

for(var i in fl) {              //遍歷返回對象,獲取每個參數(shù)及其值

    console.log(i + "=" + f1[i]);

}

如果當(dāng)前頁面的URL中沒有查詢字符串信息,用戶可以在瀏覽器的地址欄中補加完整的查詢字符串,如“?id=123&name= location”,再次刷新頁面,即可顯示查詢的查詢字符串信息。


如果改變 location.hash 屬性值,則頁面會跳轉(zhuǎn)到新的描點(<a name="anchor">g!<i<element id="anchor">), 但頁面不會重載。

    location.hash = "#top";

除了設(shè)置location對象的href屬性外,還可以修改部分URL信息,用戶只需要給location對象的其他屬性賦值即可。這時會創(chuàng)建一個新的URL,瀏覽器會將它裝載并顯示出來。

如果需要URL其他信息,只能通過字符串處理方法截取。例如,如果要獲取網(wǎng)頁的名稱,可以這樣設(shè)計。

    var p = location.pathname;

    var n = p.substring(p.lastlndexOf("/")+!);

如果要獲取文件擴展名,可以這樣設(shè)計。

    var c = p.substring(p.lastlndexOf(".")+1);

location對象還定義了兩個方法:reload()和replace()。

    reload():可以重新裝載當(dāng)前文檔。

    replace():可以裝載一個新文檔而無須為它創(chuàng)建一個新的歷史記錄。也就是說,在瀏覽器的歷史列表中,新文檔將替換當(dāng)前文檔。這樣在瀏覽器中就不能夠通過“返回”按鈕返回當(dāng)前文檔。 對那些使用了框架并且顯示多個臨時頁的網(wǎng)站來說,replaceO方法比較有用。這樣臨時頁面就不會被存儲在歷史列表中。


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部