js 相對路徑轉為絕對路徑


有時為了唯一標識網址或其它開發需要,我們需要將相對的網址轉換為絕對的網址。當然前人實現方式已經不少,但或多或少的存在缺點或兼容問題。下面我將總結已有實現並給出相對完美的實現。

常規實現:地址轉換

因該實現方式千變萬化,故略去代碼,但在開發時需考慮 base 標簽的會帶來的地址參照問題。

優點:無瀏覽器兼容問題。
缺點:代碼量大,不簡潔,速度慢。

借用瀏覽器:直接使用鏈接

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

優點:簡潔,速度快。
缺點:部分瀏覽器(IE6, IE7)轉換無效。

借用瀏覽器:封閉鏈接

var toAbsURL = function(url){ var div = document.createElement('div'); div.innerHTML = '<a href="' + url.replace(/"/g, '%22') + '"/>'; return div.firstChild.href; };

優點:無瀏覽器兼容問題。
缺點:速度一般。

借用瀏覽器:圖像方式

var toAbsURL = function(url){ var result, img = document.createElement('img'); img.src = url; result = img.src; img.src = null; return result; };

優點:無瀏覽器兼容問題,速度快。
缺點:會發起 HTTP 請求。

借用瀏覽器:我的實現

var toAbsURL = function(){ var directlink = function(url){ var a = document.createElement('a'); a.href = url; return a.href; }; return directlink('') === '' ? function(url){ var div = document.createElement('div'); div.innerHTML = '<a href="' + url.replace(/"/g, '%22') + '"/>'; return div.firstChild.href; } : directlink; }();

優點:無瀏覽器兼容問題,使用了瀏覽器探測功能最大限度提升速度。

缺點:代碼量稍大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM