用JavaScript获取一个超链接的绝对URL地址
来源:互联网 发布:cms管理系统 工作流 编辑:程序博客网 时间:2024/06/05 15:04
转自:http://www.webhek.com/get-absolute-url
对于Web程序员来说,处理简单的URL格式也许会成为一场噩梦。试想一下,一个网址里有很多组成部分都会影响你对它的解析方法:
- 是否以
/
字符开头 - 是否以
//
开头 - 是否以
?
号开头 - 是否以
#
号开头 - …等等
当你想要这个地址的绝对地址时,如何判断处理和解析?它有可能是http
协议的,还可能是https
协议的。够头痛吧。幸运的是,我们有个简单的方法来确定它的绝对地址,就是创建一个A
元素来辅助完成这个任务!
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地址,它都会返回绝对地址。试一下吧!
0 0
- 用JavaScript获取一个超链接的绝对URL地址
- javascript 获取网页地址(url)
- [JavaScript] 用js如何获取当前url地址中的域名
- 一行JavaScript代码获取页面中的所有超链接地址
- 获取Java项目的绝对根地址
- javascript 获取站点根地址(URL)
- javascript获取url地址参数实现方法
- 使用PHP将超链接的相对地址转换为绝对地址
- 用javascript获取Url
- C#返回绝对URL地址
- Javascript获取url参数(queryString)一个比较简洁的方法
- 根据给出的相对地址获取网站绝对地址
- Javascript获取页面元素的绝对位置
- Javascript获取页面元素的绝对位置 .
- JavaScript如何获得一个DOM元素的绝对位置?(获取元素位置,不依赖框架)
- URI、URL、URN,相对地址、绝对地址
- 用javascript获取客户端的MAC地址
- response.getWriter()写超链接时应该用绝对地址加工程名
- hdu 1022Tran Problem
- @html.ActionLink()的几种参数格式
- Android30_ViewPager
- 笔记118--Android延时执行的四种方法
- 海思HI3521 SDK移植开发note
- 用JavaScript获取一个超链接的绝对URL地址
- 母函数
- 图结构练习——最小生成树
- 二分图的最大匹配
- spoj 375 Query on the tree [树链剖分]
- linux调试的时候,step命令没有实现单步执行的原因!
- 27个提升效率的iOS开源库推荐
- 只要三步,完全解决数据库中文乱码问题
- SORT