国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

巧方法 JavaScript獲取超鏈接的絕對URL地址

2019-11-20 09:42:03
字體:
來源:轉載
供稿:網友

對于Web程序員來說,處理簡單的URL格式也許會成為一場噩夢。試想一下,一個網址里有很多組成部分都會影響你對它的解析方法:

????是否以/字符開頭
????是否以//開頭
????是否以?號開頭
????是否以#號開頭
…等等
當你想要這個地址的絕對地址時,如何判斷處理和解析?它有可能是http協議的,還可能是https協議的。夠頭痛吧。幸運的是,我們有個簡單的方法來確定它的絕對地址,就是創建一個A元素來輔助完成這個任務!

JavaScript代碼

這里我將使用一個返回函數的JavaScript函數,這樣做有很多好處,下面會講。

var getAbsoluteUrl = (function() { var a; return function(url) { if(!a) a = document.createElement('a'); a.href = url; return a.href; };})();

這個函數看起來有些復雜,它先將一個函數賦予一個變量,而這個函數里有另外一個函數,還有一個預先定義的變量。有人可能會問,為什么要內嵌一個函數,是否可以簡化成這樣:

var getAbsoluteUrl = function(url) { var a = document.createElement('a'); a.href=url; return a.href;}

當然這種簡單的寫法也不能算錯,但不夠完美,因為內嵌一個函數的做法雖然增加了代碼的復雜度,但它能保證A元素只被創建一次,而且可以重復利用,這樣節省了時間和內存。

也許有人會提出另外一個問題,疑惑嵌套的第二個函數里有個if判斷,為什么需要它,干嘛不寫成下面這樣:

var getAbsoluteUrl = (function() { var a = document.createElement('a'); return function(url) { a.href = url; return a.href; };})();

這自然也是一種可以運行的寫法,而且功能不會有任何錯誤。但微妙的是,如果沒有if判斷語句,在定義這個函數的時候,即使這個函數沒有被任何代碼調用,A元素也會被初始化,而有了if判斷語句,A元素會在被實際用到時才被創建,不會浪費內存和CPU。

好了,有了這個方法,不論你傳入它的是什么樣的URL地址,它都會返回絕對地址。

大家試一下吧!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖宇县| 武夷山市| 四平市| 钟山县| 余姚市| 东乡族自治县| 尚义县| 元谋县| 大港区| 措勤县| 惠东县| 湘阴县| 响水县| 谷城县| 彭水| 交城县| 阿拉尔市| 藁城市| 新田县| 交城县| 田林县| 勃利县| 新巴尔虎左旗| 永泰县| 红安县| 阿拉尔市| 余干县| 施甸县| 紫云| 庆阳市| 克拉玛依市| 乃东县| 项城市| 荃湾区| 湘潭县| 巴林右旗| 体育| 万全县| 伊金霍洛旗| 瑞丽市| 永新县|