您现在的位置是:首页 > 正文

使用 JavaScript 将相对路径转换为绝对路径

2024-04-01 01:04:38阅读 5


转自:http://baifa.me/2010/01/convert-to-absolute-path.html


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

常规实现:地址转换

因该实现方式千变万化,故略去代码,但在开发时需考虑 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;
}();
    
优点:无浏览器兼容问题,使用了浏览器探测功能最大限度提升速度。

缺点:代码量稍大。



转自:http://baifa.me/2010/01/convert-to-absolute-path.html


网站文章

  • python 根据中文表头标题抓取动态(表格)文档数据

    python 根据中文表头标题抓取动态(表格)文档数据

    思路如图左侧表头标题,要获得右侧数据。网页数据提取成汉字,表格数据间会有空格,用split()分隔成list。用index()查找某个汉字表头位置,输出list下一个位置既是要得到值 text2 ='网页纯文本,爬虫数据自己转换' # 字符串分割成列表,Python 分割字符串使用 变量.split("分割标示符号"[分割次数]),分割次数表示分割最大次数,为空则分割所有。...

    2024-04-01 01:04:12
  • 云计算和外包数据安全分析及建议

    本文讲的是云计算和外包数据安全分析及建议,【IT168 资讯】很多企业,要么已经配置了云计算,要么即将配置云计算。云计算是提高灵活性、减少成本的最新技术。通过提供捆绑、可升级的软件、基础设施、数据存储及通信解决方案,云计算供应商使公司节约了资金、避免了高成本IT承诺、获得了基于所需的有效系统规模,并且可迅速配置最新服务。  一。漫步云端前需要考虑的问题 ...

    2024-04-01 01:04:04
  • 二维数组按数字大小选取前top k个数字

    题目描述 二维数组,每行是降序的,且每行的长度不固定,综合选取去重后的前top-k大的数字。 输入: [ [10,9,7,5,2] [8,6,3] [10,9,8,5] ] 选取前top-5大的数字 ...

    2024-04-01 01:03:59
  • 方向导数与梯度

    方向导数与梯度

    导数一元函数的导数,为函数曲线在某一点的切线斜率,求解释可依据求极限思想偏导数多元函数,例如二元函数,函数为一个空间曲面,因此计算某点关于一元变量导数时,必须假定另一元变量是常数,由于不是完全导数,所...

    2024-04-01 01:03:34
  • Spring Boot整合Shiro——基础知识

    自定义SabRealm继承AuthorizingRealm类,并且重写了认证doGetAuthenticationInfo方法和授权doGetAuthorizationInfo方法。特别注意retur...

    2024-04-01 01:03:27
  • OAuth2:开放授权的强大工具

    OAuth2:开放授权的强大工具

    OAuth2,全称Open Authorization 2.0,是一种开放授权协议,它为互联网上的应用提供了一种安全、灵活的身份验证和授权方式。在OAuth2协议下,用户可以将自己的信息授权给第三方应...

    2024-04-01 01:03:20
  • 网络连接失败?提示获取不到服务器的IP地址?教你这么改哈 热门推荐

    网络连接失败?提示获取不到服务器的IP地址?教你这么改哈 热门推荐

    临近下班的时候才调好的网络哎... 后台小哥哥看到同桌发的朋友圈抱怨一天无网,特意跑过来 帮忙修复,但是我的无奈就是不给力,怎么都修复不好,各种可能假设之后(公司网络被监控,IP变更会被拉黑无网,负责人还不在),后台小哥哥把他的有效IP贡献出来给我了,但是但是.....依然无效, 还连累小哥哥也连接不上网络了...很是尴尬呀。于是赶紧掏出手机来问度娘...突然间,...

    2024-04-01 01:03:12
  • 邮箱邮件服务器迁移服务器要多久生效,将设置从电子邮件路由器迁移到服务器端同步...

    邮箱邮件服务器迁移服务器要多久生效,将设置从电子邮件路由器迁移到服务器端同步...

    将设置从电子邮件路由器迁移到服务器端同步10/01/2019本文内容备注如果您已启用仅统一接口模式,则在使用本文中的过程之前,请执行以下操作:选择导航栏上的 设置 ()。选择 高级设置。备注Micro...

    2024-04-01 01:02:46
  • 扑克牌检测Y8S

    扑克牌检测Y8S

    采用YOLOV8训练,得到PT模型,然后直接转ONNX,使用OPENCV的DNN,不需要其他依赖,支持C++/PYTHON

    2024-04-01 01:02:39
  • 规范与避坑指南

    规范与避坑指南

    1. Git 使用避坑指南1)切分支出错master 主分支,即生产版本,xx_test 分支对应测试环境分支,请基于 xx_test 分支拉功能分支开发。比如两个新需求同时开发,项目管理人员此时需基...

    2024-04-01 01:02:33