巧方法 JavaScript获取超链接的绝对URL地址

 更新时间:2016年06月14日 15:08:43   投稿:lijiao  
这篇文章主要为大家详细介绍了一个非常巧妙的方法,JavaScript如何获取超链接的绝对URL地址,感兴趣的小伙伴们可以参考一下

对于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地址,它都会返回绝对地址。

大家试一下吧!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于纯JS实现多张图片的懒加载Lazy过程解析

    基于纯JS实现多张图片的懒加载Lazy过程解析

    这篇文章主要介绍了基于纯JS实现多张图片的懒加载Lazy过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • JavaScript实现人体面部活体检测的功能

    JavaScript实现人体面部活体检测的功能

    本文详细介绍了如何在浏览器端使用JavaScript实现高可靠度的人脸活体检测,包括核心原理、可行方案、优缺点对比以及示例代码,感兴趣的朋友一起看看吧
    2025-02-02
  • JS验证日期的格式YYYY-mm-dd 具体实现

    JS验证日期的格式YYYY-mm-dd 具体实现

    这篇文章介绍了JS对日期格式的验证实例,有需要的朋友可以参考一下
    2013-06-06
  • 用纯JS实现二级菜单效果

    用纯JS实现二级菜单效果

    这篇文章主要为大家详细介绍了用纯JS实现二级菜单效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 学习jQuey中的return false

    学习jQuey中的return false

    这篇文章主要介绍了jQuey中的return false作用,以及解决jquery中的return false不起作用的方法,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 微信小程序实现简单的摇骰子游戏

    微信小程序实现简单的摇骰子游戏

    这篇文章主要为大家详细介绍了微信小程序实现简单的摇骰子游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • JS如何判断浏览器类型和详细区分IE各版本浏览器

    JS如何判断浏览器类型和详细区分IE各版本浏览器

    本篇文章主要介绍了JS判断浏览器类型和详细区分IE各版本浏览器的代码,非常具有实用价值,有兴趣的可以了解一下。
    2017-03-03
  • 解读请求方式Method和请求类型Content-Type

    解读请求方式Method和请求类型Content-Type

    HTTP请求中,Content-Type头部用于指定请求体或响应体的类型,常见的有application/x-www-form-urlencoded、multipart/form-data、application/json、text/plain、application/xml等,常用请求方式包括Get、Post、Put、Delete
    2024-09-09
  • js获取滚动距离的方法

    js获取滚动距离的方法

    这篇文章主要介绍了js获取滚动距离的方法,涉及javascript针对页面滚动条的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • 本地存储localStorage用法详解

    本地存储localStorage用法详解

    这篇文章主要为大家详细介绍了本地存储localStorage的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论