最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年06月14日 15:08:43   投稿:lijiao  
這篇文章主要為大家詳細介紹了一個非常巧妙的方法,JavaScript如何獲取超鏈接的絕對URL地址,感興趣的小伙伴們可以參考一下

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

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

JavaScript代碼

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

var getAbsoluteUrl = (function() {
 var a;

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

 return a.href;
 };
})();

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

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

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

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

var getAbsoluteUrl = (function() {
 var a = document.createElement('a');

 return function(url) {
 a.href = url;

 return a.href;
 };
})();

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

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

大家試一下吧!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

丰台区| 宁远县| 茂名市| 石台县| 昭觉县| 措勤县| 玉溪市| 高唐县| 肇庆市| 方城县| 义乌市| 酉阳| 会理县| 辽阳县| 石河子市| 武乡县| 获嘉县| 同江市| 缙云县| 五常市| 平凉市| 阳东县| 新巴尔虎左旗| 奉贤区| 平度市| 宁阳县| 凯里市| 绥棱县| 贡觉县| 湘西| 金湖县| 长丰县| 新和县| 中阳县| 五台县| 福建省| 集贤县| 五大连池市| 广安市| 松溪县| 德安县|