JS學習筆記:解析網址與處理網址中的參數(URL Paramaters)

Hellokidding
3 min readAug 17, 2020

--

Q:什麼是網址參數?

圖片出處:https://pjchender.blogspot.com/2018/08/js-javascript-url-parameters.html

解析網址(Parsing URL)

要解析網址的話,可以使用瀏覽器內建的 URL 這個 Web API,使用的方式很簡單,把網址代進去 URL 建構式就可以了:

let url= new URL('https://www.hexschool.com/?recommend=tom');

建立好了之後就可以使用幾個不同的屬性來取得網址的內容:

  • 取得完整網址(URL):
url.href ;            //https://www.hexschool.com/?recommend=tom(若是使用location物件取得網址方法則是location.href)
  • 取得網址中的主機名稱(網域名稱):
url.href ;            //www.hexschool.com(若是使用location物件取得網域名稱則是location.hostname)
url.pathname;         // /archives/(若是使用location物件取得網域名稱則是location.pathname)
  • 取得網址中的通訊協定部分
url.protocol;        // "https:"(若是使用location物件取得網域名稱則是location.protocol)
  • 取得網頁參數部分
url.search;         // "?recommend=tom"(若是使用location物件取得網域名稱則是location.protocol)

整理網址參數的好幫手:URLSearchParams

url.searchParams 這個物件是透過另一個名為 URLSearchParams 的 Web API 所建立的,透過這個 API 可以很方便的幫去設定、刪除和讀取網址字串的部分。

想要檢視這個 URLSearchParams 物件最簡單的方是直接使用 toString() :

url.searchParams.toString();      // "recommend=tom"*若是只有url.searchParams,則出來會是{}

若要取得解析後的網址參數,只需要使用 .entries() 方法搭配 for … of 就可以了:

let params = url.searchParams;
for (let pair of params.entries()) {
console.log(`key: ${pair[0]}, value: ${pair[1]}`)
}
//key:recommend , value:tom

*Object.entries()本身會將object裡的鍵值對取出並以[key , value]的方式呈現,配上for … of的做法就能將網址參數簡單的解析出來

--

--