亚洲av午夜福利精品一区人妖,亚洲乱码日产精品a级毛片久久,91精品视频观看,青草青草久热精品视频在线观看

如何用 JavaScript 來解析 URL

2020-7-14    seo達人

統一資源定位符,縮寫為URL,是對網絡資源(網頁、圖像、文件)的引用。URL指定資源位置和檢索資源的機制(http、ftp、mailto)。


舉個例子,這里是這篇文章的 URL 地址:


https://dmitripavlutin.com/parse-url-javascript

很多時候你需要獲取到一段 URL 的某個組成部分。它們可能是 hostname(例如 dmitripavlutin.com),或者 pathname(例如 /parse-url-javascript)。


一個方便的用于獲取 URL 組成部分的辦法是通過 URL() 構造函數。


在這篇文章中,我將給大家展示一段 URL 的結構,以及它的主要組成部分。


接著,我會告訴你如何使用 URL() 構造函數來輕松獲取 URL 的組成部分,比如 hostname,pathname,query 或者 hash。


1. URL 結構

一圖勝千言。不需要過多的文字描述,通過下面的圖片你就可以理解一段 URL 的各個組成部分:


image


2. URL() 構造函數

URL() 構造函數允許我們用它來解析一段 URL:


const url = new URL(relativeOrAbsolute [, absoluteBase]);

參數 relativeOrAbsolute 既可以是絕對路徑,也可以是相對路徑。如果第一個參數是相對路徑的話,那么第二個參數 absoluteBase 則必傳,且必須為第一個參數的絕對路徑。


舉個例子,讓我們用一個絕對路徑的 URL 來初始化 URL() 函數:


const url = new URL('http://example.com/path/index.html');


url.href; // => 'http://example.com/path/index.html'

或者我們可以使用相對路徑和絕對路徑:


const url = new URL('/path/index.html', 'http://example.com');


url.href; // => 'http://example.com/path/index.html'

URL() 實例中的 href 屬性返回了完整的 URL 字符串。


在新建了 URL() 的實例以后,你可以用它來訪問前文圖片中的任意 URL 組成部分。作為參考,下面是 URL() 實例的接口列表:


interface URL {

 href:     USVString;

 protocol: USVString;

 username: USVString;

 password: USVString;

 host:     USVString;

 hostname: USVString;

 port:     USVString;

 pathname: USVString;

 search:   USVString;

 hash:     USVString;


 readonly origin: USVString;

 readonly searchParams: URLSearchParams;


 toJSON(): USVString;

}

上述的 USVString 參數在 JavaScript 中會映射成字符串。


3. Query 字符串

url.search 可以獲取到 URL 當中 ? 后面的 query 字符串:


const url = new URL(

 'http://example.com/path/index.html?message=hello&who=world'

);


url.search; // => '?message=hello&who=world'

如果 query 參數不存在,url.search 默認會返回一個空字符串 '':


const url1 = new URL('http://example.com/path/index.html');

const url2 = new URL('http://example.com/path/index.html?');


url1.search; // => ''

url2.search; // => ''

3.1 解析 query 字符串

相比于獲得原生的 query 字符串,更實用的場景是獲取到具體的 query 參數。


獲取具體 query 參數的一個簡單的方法是利用 url.searchParams 屬性。這個屬性是 URLSearchParams 的實例。


URLSearchParams 對象提供了許多用于獲取 query 參數的方法,如get(param),has(param)等。


下面來看個例子:


const url = new URL(

 'http://example.com/path/index.html?message=hello&who=world'

);


url.searchParams.get('message'); // => 'hello'

url.searchParams.get('missing'); // => null

url.searchParams.get('message') 返回了 message 這個 query 參數的值——hello。


如果使用 url.searchParams.get('missing') 來獲取一個不存在的參數,則得到一個 null。


4. hostname

url.hostname 屬性返回一段 URL 的 hostname 部分:


const url = new URL('http://example.com/path/index.html');


url.hostname; // => 'example.com'

5. pathname

url. pathname 屬性返回一段 URL 的 pathname 部分:


const url = new URL('http://example.com/path/index.html?param=value');


url.pathname; // => '/path/index.html'

如果這段 URL 不含 path,則該屬性返回一個斜杠 /:


const url = new URL('http://example.com/');


url.pathname; // => '/'

6. hash

最后,我們可以通過 url.hash 屬性來獲取 URL 中的 hash 值:


const url = new URL('http://example.com/path/index.html#bottom');


url.hash; // => '#bottom'

當 URL 中的 hash 不存在時,url.hash 屬性會返回一個空字符串 '':


const url = new URL('http://example.com/path/index.html');


url.hash; // => ''

7. URL 校驗

當使用 new URL() 構造函數來新建實例的時候,作為一種副作用,它同時也會對 URL 進行校驗。如果 URL 不合法,則會拋出一個 TypeError。


舉個例子,http ://example.com 是一段非法 URL,因為它在 http 后面多寫了一個空格。


讓我們用這個非法 URL 來初始化 URL() 構造函數:


try {

 const url = new URL('http ://example.com');

} catch (error) {

 error; // => TypeError, "Failed to construct URL: Invalid URL"

}

因為 http ://example.com 是一段非法 URL,跟我們想的一樣,new URL() 拋出了一個 TypeError。


8. 修改 URL

除了獲取 URL 的組成部分以外,像 search,hostname,pathname 和 hash 這些屬性都是可寫的——這也意味著你可以修改 URL。


舉個例子,讓我們把一段 URL 從 red.com 修改成 blue.io:


const url = new URL('http://red.com/path/index.html');


url.href; // => 'http://red.com/path/index.html'


url.hostname = 'blue.io';


url.href; // => 'http://blue.io/path/index.html'

注意,在 URL() 實例中只有 origin 和 searchParams 屬性是只讀的,其他所有的屬性都是可寫的,并且會修改原來的 URL。


9. 總結

URL() 構造函數是 JavaScript 中的一個能夠很方便地用于解析(或者校驗)URL 的工具。


new URL(relativeOrAbsolute [, absoluteBase]) 中的第一個參數接收 URL 的絕對路徑或者相對路徑。當第一個參數是相對路徑時,第二個參數必傳且必須為第一個參數的基路徑。


在新建 URL() 的實例以后,你就能很輕易地獲得 URL 當中的大部分組成部分了,比如:


url.search 獲取原生的 query 字符串

url.searchParams 通過 URLSearchParams 的實例去獲取具體的 query 參數

url.hostname獲取 hostname

url.pathname 獲取 pathname

url.hash 獲取 hash 值

那么你最愛用的解析 URL 的 JavaScript 工具又是什么呢?

藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://m.skdbbs.com

存檔

亚洲av午夜福利精品一区人妖,亚洲乱码日产精品a级毛片久久,91精品视频观看,青草青草久热精品视频在线观看
<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • 亚洲精品视频免费| 欧美国产综合| 国产精品免费看久久久香蕉| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美在线综合视频| 香蕉尹人综合在线观看| 香蕉精品999视频一区二区| 亚洲欧美一区二区原创| 午夜在线精品| 久久高清福利视频| 麻豆精品传媒视频| 欧美精品一区二| 欧美三日本三级三级在线播放| 欧美日韩免费一区| 国产精品二区影院| 欧美午夜精品久久久久久浪潮| 欧美精品综合| 欧美午夜大胆人体| 国产精品呻吟| 国产精品视频精品视频| 国产欧美精品一区| 激情久久久久久| 亚洲国产高潮在线观看| 亚洲三级免费| 9色国产精品| 亚洲欧美日韩国产成人| 欧美一区免费视频| 美女诱惑黄网站一区| 99国产精品国产精品毛片| 亚洲精品视频免费在线观看| 亚洲视频精品在线| 欧美一区二区三区四区在线观看地址| 久久精品在线观看| 裸体丰满少妇做受久久99精品| 欧美激情视频一区二区三区免费| 国产精品久99| 激情国产一区| 99视频在线观看一区三区| 亚洲免费小视频| 久久久久久日产精品| 欧美精选在线| 国产日韩精品在线| 亚洲国产精品t66y| 国产精品99久久不卡二区| 欧美一级久久久| 久久综合色播五月| 欧美日韩影院| 激情成人av在线| 亚洲视频免费| 久久一本综合频道| 欧美午夜在线观看| 尤物精品国产第一福利三区| 国产精品一区二区三区久久久 | 亚洲综合精品自拍| 久久亚洲综合| 国产精品久久久久久久久借妻 | 在线视频精品| 久久久在线视频| 欧美视频不卡| 在线精品高清中文字幕| 中文国产成人精品久久一| 久久欧美中文字幕| 国产精品久久久久久久久搜平片| 在线免费高清一区二区三区| 亚洲一区影音先锋| 欧美激情1区| 国产一区视频网站| 欧美偷拍另类| 精品动漫一区| 亚洲一区三区电影在线观看| 欧美成人亚洲成人日韩成人| 国产伦精品一区二区三区视频孕妇 | 欧美日韩综合| 在线精品国产欧美| 欧美一级二级三级蜜桃| 欧美日韩在线播放一区| 亚洲国产精品日韩| 久久成人精品| 国产精品乱人伦中文| 日韩视频国产视频| 美女黄网久久| 国产真实久久| 亚洲欧美日韩精品久久亚洲区| 欧美激情一二三区| 樱桃视频在线观看一区| 国产一区二区久久| 欧美日韩成人在线播放| 伊人久久婷婷| 欧美一级播放| 国产精品swag| 亚洲日本黄色| 久久一区亚洲| 韩国一区二区在线观看| 香蕉视频成人在线观看 | 久久久久国产一区二区三区四区| 欧美视频网址| 日韩视频在线免费| 欧美大片免费看| 精品盗摄一区二区三区| 欧美中文字幕视频在线观看| 国产精品一区二区三区乱码| 亚洲一区二区三区中文字幕| 欧美人成网站| 香蕉成人啪国产精品视频综合网| 国产精品日韩| 日韩视频久久| 欧美高清在线播放| 亚洲国产精品一区二区三区| 久热re这里精品视频在线6| 久久久国产一区二区三区| 欧美性大战久久久久久久| 夜夜嗨av一区二区三区网页| 欧美激情欧美激情在线五月| 国产精品99免视看9| 国产欧美日韩高清| 亚洲综合色视频| 国产精品视频网站| 亚洲欧美区自拍先锋| 国产精品久久久久久久第一福利| 亚洲一区二区三区成人在线视频精品| 欧美精品在线一区| 一本大道av伊人久久综合| 欧美日韩高清在线| 欧美精选午夜久久久乱码6080| 亚洲日韩中文字幕在线播放| 午夜久久电影网| 国产精品日韩电影| 欧美一区2区视频在线观看| 国产午夜精品麻豆| 久久激情婷婷| 在线日本高清免费不卡| 欧美大片第1页| av成人福利| 国产精品美女999| 亚洲第一页自拍| 亚洲第一福利在线观看| 美女爽到呻吟久久久久| 最近看过的日韩成人| 欧美日韩1区2区| 亚洲一区二区网站| 国产农村妇女精品一二区| 欧美一区=区| 在线免费日韩片| 欧美精品一区二区三区一线天视频| 久久综合狠狠| 亚洲精品网站在线播放gif| 久久精品99无色码中文字幕| 一区二区三区在线视频观看| 欧美激情精品| 亚洲综合成人婷婷小说| 国产一区二区成人久久免费影院| 久久综合一区二区| 99精品国产热久久91蜜凸| 国产精品乱码妇女bbbb| 久久精品九九| 亚洲在线第一页| 亚洲性图久久| 国产一区二区三区不卡在线观看| 久久字幕精品一区| 99re8这里有精品热视频免费 | 女人天堂亚洲aⅴ在线观看| 日韩视频一区| 在线亚洲免费| 国产精品swag| 亚洲视频免费观看| 国内久久视频| 欧美精品一区二区三区四区 | 伊人婷婷久久| 欧美日韩免费在线观看| 欧美一区三区三区高中清蜜桃 | 午夜在线不卡| 国产欧美一区二区精品性| 久热精品视频在线观看| 一区二区不卡在线视频 午夜欧美不卡' | 99re热这里只有精品免费视频| 国产老肥熟一区二区三区| 麻豆精品在线视频| 亚洲欧美国产另类| 亚洲国产精品一区二区尤物区| 午夜精品久久久久久99热| 亚洲国产高潮在线观看| 国产乱码精品一区二区三| 欧美成人午夜激情视频| 午夜精品久久久久久99热软件| 91久久精品国产91久久性色tv| 国产精品青草久久久久福利99| 欧美成人精品福利| 午夜精品久久久久久久蜜桃app| 91久久精品国产| 久久久精品2019中文字幕神马| 99视频精品在线| 国产精品尤物| 欧美日韩精品高清| 久久综合电影一区| 午夜精品福利在线| 夜夜夜精品看看| 亚洲国产高潮在线观看| 国产一区二区高清不卡| 欧美日韩在线综合| 欧美成黄导航|