JavaScript 开发中有时需要获取绝对 URL,图片可以使用 img.src
返回绝对路径,一些以字符串形式存储的 URL 的则处理起来会比较繁琐,比如:
- 以
/
或者不以/
开头的; //
相对协议的;- 以
?
开头的; - 以
#
开头的; - ……
借助 a
元素可以很方便的解决这个问题:
var getAbsoluteUrl = (function() {
var a;
return function(url) {
a = a || document.createElement('a');
a.href = url;
return a.href;
};
})();
之所以这样写,是基于性能考虑:调用时只会创建一个 a
元素。
也可以给 String
对象扩展一个方法(个人不喜欢这样):
(function(a){
String.prototype.toURL = function(){
a.href = this;
return this;
};
})(document.createElement('a'));
有兴趣的同学也可以关注一下还在制定中的 URL() API。