Js之Location對象


Window對象的location屬性引用的是Location對象,它表示該窗口中當前顯示的文檔的URL,並定義了方法來使窗口載入新的文檔。Document對象的location屬性也引用到Location對象:window.location === document.location 返回true
Document對象也有一個URL屬性,是文檔首次載入后保存該文檔的URL的靜態字符串。如果定位到文檔中的片段標識符(如#table-of-c ontents),Location對象會做相應的更新,而document.URL屬性卻不會改變。

Window對象的location屬性引用的是Location對象,它表示該窗口中當前顯示的文檔的URL。Location對象的href屬性是一個字符串,后者包含URL的完整文本。Location對象的toString()方法返回href屬性的值,因此在會隱式調用toString()的情況下,可以使
用location代替location.href。這個對象的其他屬性-protocolhosthostnameportpathnamesearch,分別表示URL的各個部分。它們稱為“URL分解”屬性,同時被Link對象(通過HTML文檔中的<a>和<area>元素創建)支持。

  • location.hostname 返回 web 主機的域名
  • location.pathname 返回當前頁面的路徑和文件名
  • location.port 返回 web 主機的端口 (80 或 443)
  • location.protocol 返回所使用的 web 協議(http:// 或 https://)
  • location.href 屬性返回當前頁面的 URL。
  • location.assign() 方法加載新的文檔。

Location對象的hashsearch屬性比較有趣。如果有的話,hash屬性返回URL中的“片段標識符”部分。search屬性也類似,它返回的是問號之后的URL,這部分通常是某種類型的查詢字符串。一般來說,這部分內容是用來參數化URL並在其中嵌入參數的。
雖然這些參數通常用於運行在服務器上的腳本,但在啟用JavaScript的頁面中當然也可以使用它們。

例14-2:提取URL的搜索字符串中的參數
/率
十這個函數用來解析來自URL的查詢串中的name=value參數對
+它將name=value對存儲在一個對象的屬性中,並返回該對象
+這樣來使用它
+  var args=urlArgs();//從URL中解析參數
+  var q=args.q || ””;//如果參數定義了的話就使用參數}否則使用一個默認值
+var n=args.n ? parselnt(args.n):1O,
+/
function urlArgs(){
    var args={);    //定義一個空對象
    var query=location.search.substring(1);  //查找到查詢串,並去掉‘?’
    var pairs=query.split(”&”);    //根據”&”符號將查詢字符串分隔開
    for(var i:o;i<pairs.length; i++){    //對於每個片段
    var pos=pairs[i].indexof(‘=’);    /,查找”name=value”
    if (pos==-i) continue;    //如果沒有找到的話,就跳過
    var name=pairs[i].substring(o,pos),  ll提取name
    var value=pairs[i].substring(pos+1); ll提取value
    value=decodeURIComponent(value);    //對value進行解碼
    args[name]=value;    //存儲為屬性
    )
    return args;    //返回解析后的參數
)

Location對象的assign()方法可以使窗口載入並顯示你指定的URL中的文檔。replace()方法也類似,但它在載入新文檔之前會從瀏覽歷史中把當前文檔刪除。如果腳本無條件地載入一個新文檔,replace()方法可能是比assgin()方法更好的選擇。否則, “后退”
按鈕會把瀏覽器帶回到原始文檔,而相同的腳本則會再次載入新文檔。如果檢測到用戶的瀏覽器不支持某些特性來顯示功能齊全的版本,可以用location.replace()來載入靜態的HTML版本。
//如果洳覽器不支持XMLHttpRequest對象
//則將其置定向到一個不需要Ajax的靜態頁面

if (IXMLHttpRequest) location.replace(”staticpage.html”);

注意,在這個例子中傳人replace()的是一個相對URL。相對URL是相對於當前頁面所在的目錄來解析的,就像將它們用於一個超鏈接中。除了assgin()和replace0方法,Location對象還定義了reload()方法,后者可以讓瀏覽器重新載入當前文檔。

 

使瀏覽器跳轉到新頁面的一種更傳統的方法是直接把新的URL賦給location屬性:

location=“http://www.oreilly.com”;//在此網站購買書!


還可以把相對URL賦給location,它們會相對當前URL進行解析:

location=”page2.html”; //載入下一個頁面


純粹的片段標識符是相對URL的一種類型,它不會讓瀏覽器載入新文檔,但只會使它滾動到文檔的某個位置。#top標識符是個特殊的例子:如果文檔中沒有元素的ID是“top”,它會讓瀏覽器跳到文檔開始處。

location=“#top”; //跳轉到文檔的頂部


Location對象的URL分解屬性是可寫的,對它們重新賦值會改變URL的位置,並且導致瀏覽器載入一個新的文檔(如果改變的是hash屬性,則在當前文檔中進行跳轉):

location.search = ”?page=”+(pagenum+i);//載入下一個頁面

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM