javascript将相对路径转绝对路径示例

 这篇文章主要介绍了javascript将相对路径转绝对路径示例,这里介绍的其实本质上是两种方法,通过创建DOM或通过JavaScript计算,需要的朋友可以参考下

这里介绍的其实本质上是两种方法,通过创建DOM或通过JavaScript计算:
 
1)通过新创建的Image, 经测试会发送一个Aborted的请求,并且IE6不支持, 将new Image改成document.createElement('IMG')也是一样的;测试应该不喜欢这个方案;
 
 代码如下:
function getAbsoluteUrl(url){
    var img = new Image();
    img.src = url;  // 设置相对路径给Image, 此时会发送出请求
    url = img.src;  // 此时相对路径已经变成绝对路径
    img.src = null; // 取消请求
    return url;
}
getAbsoluteUrl("showroom/list");
 
 
2)创建Anchor(链接),这种方法不会发出任何请求(请求会在加入DOM时产生),但是IE6也不支持
代码如下:
/*jslint regexp: true, white: true, maxerr: 50, indent: 2 */
 
function parseURI(url) {
  var m = String(url).replace(/^s+|s+$/g, '').match(/^([^:/?#]+:)?(//(?:[^:@]*(?::[^:@]*)?@)?(([^:/?#]*)(?::(d*))?))?([^?#]*)(?[^#]*)?(#[sS]*)?/);
  // authority = '//' + user + ':' + pass '@' + hostname + ':' port
  return (m ? {
    href     : m[0] || '',
    protocol : m[1] || '',
    authority: m[2] || '',
    host     : m[3] || '',
    hostname : m[4] || '',
    port     : m[5] || '',
    pathname : m[6] || '',
    search   : m[7] || '',
    hash     : m[8] || ''
  } : null);
}
 
function absolutizeURI(base, href) {// RFC 3986
 
  function removeDotSegments(input) {
    var output = [];
    input.replace(/^(..?(/|$))+/, '')
         .replace(//(.(/|$))+/g, '/')
         .replace(//..$/, '/../')
         .replace(//?[^/]*/g, function (p) {
      if (p === '/..') {
        output.pop();
      } else {
        output.push(p);
      }
    });
    return output.join('').replace(/^//, input.charAt(0) === '/' ? '/' : '');
  }
 
  href = parseURI(href || '');
  base = parseURI(base || '');
 
  return !href || !base ? null : (href.protocol || base.protocol) +
         (href.protocol || href.authority ? href.authority : base.authority) +
         removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : (href.pathname ? ((base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname) : base.pathname)) +
         (href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search)) +
         href.hash;
}
 
 
因我们的产品为手机端网页,早已不支持IE6,最终使用的是第二种方案;
 
由此可见,用原生态的方法访问所有的Image, Anchor时,返回的都是绝对路径,此时如果想返回原来的相对路径,可以用查询DOM的方法,如jQuery.attr()方法:
 
 代码如下:
//返回绝对路径,jQuery对象实质上是"类数组"结构(类似arguments),因此使用[0]可以访问到原生态的对象,然后取"href";
console.log($anchor[0]["href"]);
//返回原始路径
console.log($anchor.attr("href"));
 

时间: 2024-10-29 08:15:03

javascript将相对路径转绝对路径示例的相关文章

html网页-如何在HTML文件中通过javascript获得当前网页的绝对路径和相对路径

问题描述 如何在HTML文件中通过javascript获得当前网页的绝对路径和相对路径 各位大神,我希望在html文件,(注意:不是jsp文件或asp文件)中通过javascript获得当前网页的地址(磁盘地址).换句话说,比如我正在打开的网页文件是index.htm,该网页文件放在了d:webconfightml路径下,我如何在index.htm文件中获得它自己的磁盘路径?即:如何获得路径"d:webconfightml"? 注意:不能有服务器端的支持,也就是我的网页不是运行在服务器

javascript获取URL参数与参数值的示例代码

 本篇文章主要是对javascript获取URL参数与参数值的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: <script>                   function goto_url(url){                       var new_url = "http://shop.usteel.com/index.php?app=list_release";                       var d_

JSP、Servlet中的相对路径和绝对路径

js|servlet JSP.Servlet中的相对路径和绝对路径 JSP和Servlet中的绝对路径和相对路径问题困扰了我好几天,经过努力之后将其部分心得和大家共享. 前提:假设你的Http地址为http://192.168.0.1/你的web应用为webapp,那么你的web应用URL为http://192.168.0.1/webapp/ web应用的目录结构: webapp/ web-inf/ classes/ lib/ web.xml <servlet-mapping> <ser

ASP.NET教程:绝对路径与相对路径的拼合方法

引言 在做文件路径处理时,经常需要对一个路径的相对路径进行操作,那么如何拼合相对路径以生成新的绝对路径呢? Path.Combine()方法 我们知道System.IO.Path是专门用来处理路径的静态类,它有一个Combine()方法就是用于拼接路径的,我们来测试一下其拼接效果. 我们使用一个命令行程序进行测试,这里要测试相对于文件C:abc123avatar.html的一系列相对路径,测试代码如下: class Program { static string path = @"C:abc12

ASP.NET将Web站点下的绝对路径转换为虚拟路径

asp.net|web|站点|转换 很经常使用到的一个功能,但在在网上却一直没有找到相关的解决方法,今天借着项目应用到的机会写了两个将绝对路径转换为虚拟路径封装好的方法将Web站点下的绝对路径转换为相对于指定页面的虚拟路径/**//// <summary>/// 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径/// </summary>/// <param name="page">当前页面指针,一般为this</param>///

Dreamweaver绝对路径和相对路径

  在HTML里只要涉及文件的地方(如超级链接.图片等)就会涉及绝对路径与相对路径的概念. 1.绝对路径 绝对路径是指文件在硬盘上真正存在的路径.例如"bg.jpg"这个图片是存放在硬盘的"E:book网页布局代码第2章"目录下,那么"bg.jpg"这个图片的绝对路径就是"E:book网页布代码第2章bg.jpg".那么如果要使用绝对路径指定网页的背景图片就应该使用以下语句: 2.使用绝对路径的缺点 事实上,在网页编程时,很少

什么是绝对路径和相对路径

  在HTML里只要涉及文件的地方(如超级链接.图片等)就会涉及绝对路径与相对路径的概念. 1.绝对路径 绝对路径是指文件在硬盘上真正存在的路径.例如"bg.jpg"这个图片是存放在硬盘的"E:book网页布局代码第2章"目录下,那么"bg.jpg"这个图片的绝对路径就是"E:book网页布代码第2章bg.jpg".那么如果要使用绝对路径指定网页的背景图片就应该使用以下语句: 2.使用绝对路径的缺点 事实上,在网页编程时,很少

HTML相对路径和绝对路径

  如果你在引用文件时(如加入超链接,或者插入图片等),使用了错误的文件路径,就会导致引用失效(无法浏览链接文件,或无法显示插入的图片等). 为了避免这些错误,正确地引用文件,我们需要学习一下HTML路径. HTML有2种路径的写法:相对路径和绝对路径. HTML相对路径(Relative Path) 同一个目录的文件引用 如果源文件和引用文件在同一个目录里,直接写引用文件名即可. 我们现在建一个源文件info.html,在info.html里要引用index.html文件作为超链接. 假设in

Java相对路径与绝对路径的问题

 在写java程序时不可避免要获取文件的路径-总结一下,遗漏的随时补上     1.可以在servlet的init方法里     String path = getServletContext().getRealPath("/"):     这将获取web项目的全路径     例如 :E:eclipseM9workspacetree     tree是我web项目的根目录     2.你也可以随时在任意的class里调用     this.getClass().getClassLoad