日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

用JavaScript获取一个超链接的绝对URL地址

發(fā)布時(shí)間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用JavaScript获取一个超链接的绝对URL地址 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

  • 是否以/字符開頭
  • 是否以//開頭
  • 是否以?號(hào)開頭
  • 是否以#號(hào)開頭
  • …等等

當(dāng)你想要這個(gè)地址的絕對(duì)地址時(shí),如何判斷處理和解析?它有可能是http協(xié)議的,還可能是https協(xié)議的。夠頭痛吧。幸運(yùn)的是,我們有個(gè)簡單的方法來確定它的絕對(duì)地址,就是創(chuàng)建一個(gè)A元素來輔助完成這個(gè)任務(wù)!

JavaScript代碼

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

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

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

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

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

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

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

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

好了,有了這個(gè)方法,不論你傳入它的是什么樣的URL地址,它都會(huì)返回絕對(duì)地址。試一下吧!

轉(zhuǎn)載于:https://www.cnblogs.com/rookieCat/p/4680039.html

總結(jié)

以上是生活随笔為你收集整理的用JavaScript获取一个超链接的绝对URL地址的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。