国产黄色免费网站_久久天天做天天爱综合色_精品国产一区久久久_成人黄色激情网站_久久成人在线视频_美女一区二区在线观看_亚洲精品免费一区亚洲精品免费精品一区 _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 工具又是什么呢?

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

日歷

鏈接

個人資料

藍藍設計的小編 http://www.newchinaweekly.com

存檔

黄色av免费在线观看| 欧美一乱一性一交一视频| 麻豆国产va免费精品高清在线| 九九九久久国产免费| 国产精品爽爽ⅴa在线观看| 狠狠久久综合婷婷不卡| 宅男av一区二区三区| 91黄色小网站| 国产成人高清在线| 久久综合九色综合欧美98| 亚洲专区一二三| 精品国产免费人成电影在线观看四季 | 日韩精品一区二区亚洲av性色| 一区二区三区福利视频| 天天插天天干天天操| 激情视频免费在线| 91欧美在线视频| 高清在线一区二区| 亚洲二区免费| 久久久777精品电影网影网 | 中文字幕亚洲精品视频| 中文字幕高清20页| 亚洲电影免费观看高清| 久久久女人电视剧免费播放下载| 国产深夜福利| 久久五月天综合| 国产字幕中文| 国产91亚洲精品| 久久综合给合| 2020久久国产精品| 九色丨porny丨| 国产精品三区www17con| 污视频免费在线观看| 琪琪第一精品导航| 99久久99| 国产精品亚洲二区在线观看| 欧美夫妻性生活| 桃乃木香奈和黑人aⅴ在线播放| 欧美大片免费久久精品三p | 国产黄片一区二区三区| av不卡一区二区三区| 国产成人自拍视频在线| 91老师片黄在线观看| 一区二区欧美日韩视频| 一道精品视频一区二区三区男同| 亚洲国产欧美在线人成| 91国偷自产中文字幕久久| 午夜av一区二区三区| 午夜小视频在线观看| 日本中文字幕高清| 精品网站aaa| √天堂中文官网8在线| 亚洲三级免费电影| 成黄免费在线| 一区二区在线视频观看| 久久精品二区三区| 日本韩国欧美在线| 国产精品极品美女在线观看免费 | 欧美日韩国产色| 久久久人成影片一区二区三区观看| 中文字幕一区二区三区5566| 亚洲精品国产一区黑色丝袜| 亚洲国产日韩成人综合天堂| 最新黄网在线观看| 国产在线不卡| 九九九久久久精品| 中文在线免费一区三区高中清不卡| 日韩国产在线看| 亚洲一卡二卡区| 男女午夜激情视频| 亚洲成人第一网站| 日本在线三级| 成人影音在线| 亚洲激情网站| 91精品国模一区二区三区| 国产91精品入口17c| 日韩精品一区二区在线视频 | 9l国产精品久久久久麻豆| 亚洲视频在线免费看| 日本久久久久久久| 爱爱爱爱免费视频| 日韩中文字幕免费在线观看| 黄色成人在线网| 日本va欧美va精品发布| 精品少妇一区二区三区日产乱码| 五月天丁香综合久久国产| 麻豆精品一区二区三区视频| 日本1区2区3区中文字幕| av资源久久| 成人性色生活片| 日韩中文字幕在线看| 久久精品免费一区二区| 超碰免费在线97| 国产不卡人人| 北条麻妃一区二区三区| 欧美丰满少妇xxxx| 日本性生活一级片| 免费观看的成年网址| 久久久久观看| 欧美日韩中文字幕在线视频| 翡翠波斯猫1977年美国| 欧美久久久久久久久久久久| 在线资源av| 香蕉国产精品偷在线观看不卡| 精品国产乱码久久久久久1区2区| 精品一区二区三区毛片| 成人福利小视频| 久久天堂av| 亚洲人成亚洲人成在线观看图片 | 欧美一级黄色片| 干日本少妇视频| 神马午夜精品95| 美女久久久久久| 中文字幕亚洲欧美在线不卡| 97久久天天综合色天天综合色hd| 久久免费看少妇高潮v片特黄| 在线观看视频网站你懂得| 久久都是精品| 精品国产视频在线| 午夜剧场免费看| 午夜国产视频| 日韩精品免费视频人成| 久久99久久99精品免观看粉嫩| 漂亮人妻被黑人久久精品| 日本福利视频| 日本欧美在线看| 国产91成人video| 国产午夜手机精彩视频| 日本在线观看网站| 久久久久久久久蜜桃| 国产成人女人毛片视频在线| 色一情一乱一伦| 小h片在线观看| 一区二区三区免费看视频| 日韩免费av一区二区三区| 免费在线观看黄色小视频| 欧美另类色图| 日韩www.| 国产偷国产偷亚洲清高网站 | 国产极品嫩模在线视频一区| 免费看成人吃奶视频在线| 欧美变态凌虐bdsm| 极品人妻一区二区| 中文在线а√在线| 国产成人精品影视| 色偷偷av一区二区三区乱| 日韩一级免费看| 国产一区亚洲二区| 亚洲夜间福利| 欧美成人激情图片网| 永久看片925tv| 345成人影院| 国产成人综合亚洲91猫咪| 国产区精品在线观看| 黄色av免费播放| 欧美极品视频| 激情成人午夜视频| 91精品在线看| 亚洲狼人综合网| 国产成人黄色| 北条麻妃99精品青青久久| 美国一级片在线观看| 亚洲精品国产精品国产| 在线免费观看日本欧美| 少妇一级淫免费放| 日本免费不卡| 中文字幕在线播放不卡一区| av日韩在线看| 超碰超碰97| 91视频com| 99精品一区二区三区的区别| 中国女人内谢25xxxx免费视频| 蜜臀av亚洲一区中文字幕| 国产亚洲精品美女| 美女视频久久久| 中文字幕日本一区| 亚洲午夜av在线| 日韩精品免费播放| 深夜福利视频一区| 亚洲激情自拍视频| 黄色手机在线视频| 中文字幕免费高清电视剧网站在线观看| 亚洲sss视频在线视频| 日本人69视频| 在线黄色网页| 欧美一区二区三区四区视频| 91中文字幕永久在线| 精品免费av一区二区三区| 日韩www在线| 麻豆国产尤物av尤物在线观看 | 国产精品久久久久国产精品日日| 国产情侣第一页| 欧美欧美欧美| 精品国产精品自拍| 亚洲欧美在线不卡| 人人精品久久| 精品国产一区二区三区久久久| 中文在线a天堂| 精品av久久久久电影| 国外成人在线视频网站|