zoukankan      html  css  js  c++  java
  • js 相对路径转为绝对路径

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

    常规实现:地址转换

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

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

    缺点:代码量稍大。

  • 相关阅读:
    awk应用
    字符串应用,expect预期交互,数组,正则表达式
    for,while循环,case分支,shell函数
    数值运算,if结构
    shell基础应用,变量的扩展应用
    rsync基本用法与配置,split分离解析
    PXE自动装机
    配置DNS服务器
    进程查看,终止
    应用技巧,vim用法,编译安装软件包
  • 原文地址:https://www.cnblogs.com/codeon/p/9151509.html
Copyright © 2011-2022 走看看