有时为了唯一标识网址或其它开发需要,我们需要将相对的网址转换为绝对的网址。当然前人实现方式已经不少,但或多或少的存在缺点或兼容问题。下面我将总结已有实现并给出相对完美的实现。

常规实现:地址转换

因该实现方式千变万化,故略去代码,但在开发时需考虑 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;
}();

优点:无浏览器兼容问题,使用了浏览器探测功能最大限度提升速度。

缺点:代码量稍大。

js 相对路径转为绝对路径的更多相关文章

  1. img的绝对路径转为相对路径

    $('#add_img').on('change', function(){ var objUrl = getObjectURL(this.files[0]) ; if (objUrl) { $(th ...

  2. 黄聪:PHP转换网址相对路径到绝对路径的一种方法

    相信很多程序(尤其是采集类的程序)都会有需要把网址的相对路径转换成绝对路径的需要,例如采集到某页面的HTML代码中包含资源文件经常会看到这样的文件名: <link rel="style ...

  3. JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串、blob对象在上传

    主题: JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串.blob对象在上传. 用处: 从本地选择图片上传,如项目规定只能选择本项目文件夹下的图像上传为头像等. 主要思想: ...

  4. javascript中外部js文件取得自身完整路径得办法

    原文:javascript中外部js文件取得自身完整路径得办法 有时候我们需要引入一个外部js文件,这个js文件又需要用到自己的路径或者是所在的目录,别问怎么又这么变态的需求,开发做久了各种奇葩需求也 ...

  5. 用node.js express设置路径后 子路径下的页面访问静态资源路径出问题

    在routes/news_mian.js 设置了访问news_main.html 的路径 '/',通知设置一个访问news-page.html的子路径'/newspage'子路径.但是在访问loacl ...

  6. js方法用来获取路径传参上所带的参数

    //js方法用来获取路径传参上所带的参数 function GetQueryString(param) { var reg = new RegExp("(^|&)" + p ...

  7. 使用监听器解决路径问题,例如在jsp页面引入js,css的web应用路径

    使用监听器解决路径问题,例如在jsp页面引入js,css的web应用路径 经常地,我们要在jsp等页面引入像js,css这样的文件,但是在服务器来访问的时候,这时间就有关到相对路径与绝对路径了.像网页 ...

  8. Vue.js Extension Pack 和 jsconfig.json 可以定位跳转到@开头的路径等自定义路径

    Vue.js Extension Pack | vsCode插件 可以定位跳转到@开头的路径等自定义路径 webpack自定义别名后,VScode路径提示问题 //tsconfig.json 或者 j ...

  9. 04-Node.js学习笔记-相对路径VS绝对路径

    4.1相对路径VS绝对路径 大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录 在读取文件或者设置文件路径时都会选择绝对路径 4.2使用__dirname 获取当前文件所在的 ...

随机推荐

  1. MySQL索引类型,优化,使用数据结构

    工欲善其事必先利其器 半藏说道:“若你在路途中遇到上帝,上帝也会被割伤.” 一.mysql 索引分类(默认使用B树结构)在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令 My ...

  2. Swap HDU - 2819 (有关矩阵的二分匹配)

    题意见大佬:https://www.cnblogs.com/gj-Acit/archive/2013/08/17/3265502.html 题目大意很明确,交换图的某些行或者是某些列(可以都换),使得 ...

  3. 洛谷P3385 【模板】负环(DFS求环)

    洛谷题目传送门 HNOI爆零前回刷模板题 非常不正经的题目,目前并没有合适的优秀算法,就算是大家公认的dfs(还是不要强行叫dfs-spfa吧,概念应该不一样,这就是暴力dfs松弛答案) 但是对于随机 ...

  4. 【转】巧用CAT706做掉电检测

    相信大家都会遇到这样的情况,当你正在敲一份文档或一段代码时,啪的一下停电啦,我擦……,我的代码……,我的图纸……,我刚写好的文章…….但是在嵌入式系统中也会遇到类似的情况,通常会导致嵌入式系统数据,程 ...

  5. Logistic回归中损失函数求导证明过程

  6. SQL Server 2016 的JSON功能

    测试一下基本的,从查询结果里面构造一个json 的格式 create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int) ...

  7. SQL存储过程例子

    存储过程呢,学校里学习的都是简单的.这里是我在工作的时候写的存储过程,贴出来,其中公司相关我都XXX代替了 (注:这个例子可以算是动态SQL的例子了,写死的是静态SQL,这个很灵活的传入参数的是动态S ...

  8. 用Riffstation扒带

    有人说扒带本质就是扒和声 编曲初学者如果是自学的情况下很容易陷入瓶颈,网络上的编曲爱好者大都建议去多扒带,所谓扒带其实就是把别人的编曲自己编出来,然而这要很好的听力,下面我介绍的这款软件就是用来扒和声 ...

  9. ubuntu 发送邮件

    1. 使用下面命令安装 sudo apt-get install heirloom-mailx 2. 编辑配置信息 vim /etc/nail.rc //此时如果打印没有权限则使用sudo命令,并且在 ...

  10. Java与groovy混编 —— 一种兼顾接口清晰和实现敏捷的开发方式

    有大量平均水平左右的"工人"可被选择.参与进来 -- 这意味着好招人 有成熟的.大量的程序库可供选择 -- 这意味着大多数项目都是既有程序库的拼装,标准化程度高而定制化场景少 开发 ...