链接中的地址

在编写页面时,有些标签会附带一个链接地址属性,比如a标签、img标签、link标签、script标签等等

在书写地址时,你可以使用多种方式来表示地址,本文将探讨每一种方式的书写特点



url完整地址

在下面的例子中,a标签的href属性值,使用了url完整地址:

<a href="http://www.google.com/">谷歌</a>

当在页面上点击这个标签时,浏览器将跳转到http://www.google.com/这个地址。

这种方式,有它的好处,也有它的缺陷。

好处在于,由于它是一个完整的url地址,它可以表示互联网中任意位置的任意资源,这样一来,你可以随意的引用站外资源(不是自己网站的资源)。

缺陷在于,如果你引用的是站内资源(本网站资源),如果你依然使用这种方式,一旦有一天你的域名发生变化,就可能导致大量的修改。

比如,你现在网站的域名是abc.com,在网站中,其中一个页面是使用如下方式编写的:

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title>    <link rel="stylesheet" href="http://abc.com/css/index.css">    <script type="text/javascript" src="http://abc.com/scripts/common.js"></script></head><body>...<a href="http://abc.com/news/index.php">更多新闻</a>...<img src="http://abc.com/upload/1023513.jpg" >...</body></html>

在上面的html中,所有的地址位置都使用的url完整路径,现在看来,好像没什么问题。

有一天,你的BOSS对你说:“我刚买了一个更加霸气的域名,123.com,给你一个小时,把我们的域名换成123.com!没毛病吧,老铁?”

然后,你看着七八十个页面、js文件中都大量使用的是abc.com,除了辞职,你想不到别的办法。

所以,如果要引用站内资源,不推荐使用url完整路径。

绝对路径

绝对路径使用一个斜杠/开始,表示站点根目录。

绝对路径的写法,省略了协议、主机、端口,仅保留从站点根目录开始寻找资源的路径。

比如,你开发的网站具有如下的目录结构:

如果你要在页面index.php中引用站内资源(BB.GIF),则可以考虑使用绝对路径:

<img src="/imgs/BB.GIF" >

假设你的域名是abc.com,使用http://abc.com/index.php访问页面,就可以看到图片效果了。

img标签中使用了绝对路径,表示从站点根目录下寻找imgs文件夹,从该文件夹中找到BB.GIF这个资源。这样的书写,就相当于告诉浏览器,从地址http://abc.com/imgs/BB.GIF中寻找资源。

绝对路径的好处在于,只要引用的资源位置在本站点中不变,无论引用者的位置如何变动,都可以得到正确的结果。

比如,有一天,你的index.php页面需要换一个位置,变成如下位置:

虽然你改变了index.php(引用者)的位置,但你没有改变BB.GIF(被引用者)的位置,因此,对BB.GIF的引用,任然可以使用同样的绝对路径/imgs/BB.GIF访问,不需要改动页面中的任何代码,图片依然可以显示。

但绝对路径的缺陷在于,如果被引用的资源位置改变,也会造成大量的改动。如果BB.GIF从imgs文件夹中移动到了另一个文件夹,对BB.GIF使用绝对路径的所有位置都需要改动。

相对路径

相对路径是指,引用的资源,相对于当前被访问的页面的位置。

说起来好像很抽象,用一个具体的例子来说明,看如下的目录结构:

同样的,index.php页面中有两个img标签,需要分别引用BB.GIF和BA.GIF,当然,你可以使用绝对路径来完成,但也可以使用相对路径完成:

<img src="./BB.GIF" ><img src="../imgs/BA.GIF" >

上面代码中的两个img标签,都使用了相对路径,相对路径有两种开始方式:

  • ./开头,表示从页面所在目录开始寻找,在本例中,表示从htmls目录中寻找
  • ../开头,表示从页面所在目录的上一级目录开始寻找,在本例中,表示从根目录开始寻找

于是,当我们使用http://abc.com/htmls/index.php访问index.php页面时,页面中的两个img标签实际的链接地址分别是:

  • http://abc.com/htmls/BB.GIF
  • http://abc.com/imgs/BA.GIF

顺便说一句,如果相对路径使用./开始,实际上可以省略,上面的示例代码也可以使用以下的写法,效果完全一样:

<img src="BB.GIF" >  <!-- 省略掉了./  --><img src="../imgs/BA.GIF" >

使用相对路径的好处在于,如果资源引用者和资源的相对位置不发生改变,不需要改动任何代码。

比如,把之前的目录结构改为如下结构:

虽然目录变了,但你仔细观察,index.php和BB.GIF、BA.GIF的相对位置是没有任何变化的,因此,你无须改动index.php中的任何代码,所有的资源都能正常引用。

只不过现在,你需要使用http://abc.com/test/htmls/index.php访问index.php页面,而页面中的两个img标签实际的链接地址自动变成了:

  • http://abc.com/test/htmls/BB.GIF
  • http://abc.com/test/imgs/BA.GIF

但是,使用相对路径的缺陷在于,如果资源的相对位置发生了改变,会造成代码的修改。

总结

这里简单总结一下三种链接地址的书写方式:

书写方式 优点 缺点 使用场景
完整url地址 可以链接全网任意资源 链接站内资源时域名改变会造成大量修改 链接站外资源时使用
绝对路径 只要链接的资源路径不变,代码不变 链接的资源路径一旦改变,会造成大量修改
不能链接站外资源
链接的站内资源路径稳定时使用
相对路径 只要链接的资源相对位置不变,代码不变 链接的资源相对位置改变,会造成大量修改
不能链接站外资源
时间: 2024-10-04 21:26:27

链接中的地址的相关文章

js获取url链接中的参数

js获取url链接中的参数:url传递参数这是常识,这里就不多介绍了,既然传递参数就要获取参数的值,下面就介绍一下如何实现此功能.代码如下: function request(paras){ var url="softwhy.com?a=1&b=2"; var paraString=url.substring(url.indexOf("?")+1,url.length).split("&"); var paraObj={} for

链接库和地址无关码

[静态连接和动态链接库] [静态链接]--->静态库:和源程序链接和并装载到虚拟内存[动态链接]--->共享库:                    <1>静态共享库:针对每个库,操作系统分配特定虚拟内存地址,模块装载到该特定的虚拟地址,若当前共享库未被装载,那么这个地址空间闲置.即最终装载地址在编译时未确定,在链接时由于知道了库所以确定了:                    <2>动态共享库:动态共享库装载时,由装载器根据当前虚拟内存中地址空间情况,动态分配虚拟

获取链接中的参数值

如何获取地址中的参数 想要获取这个链接地址中的参数可以在jsp中用java片段获取,在<head>中 <% String type =request.getParameter("type"); %> <script type="text/javascript"> var type = <%=type%>; </script> 可以再js中使用这个type,开始只是需要这个参数代入到ajax中的条件中去,没有

HTML &lt;base&gt; 标签 为页面上的所有链接规定默认地址或默认目标

定义和用法 <base> 标签为页面上的所有链接规定默认地址或默认目标. 通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白. 使用 <base> 标签可以改变这一点.浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL.这其中包括 <a>.<img>.<link>.<form> 标签中的 URL. <base> 标签必须位于 head 元素内部.

链接中 href=&#39;#&#39; 和 href=&#39;###&#39; 的区别

<a> 标签 + onclick='{jscode}' 是很常用的一种 js 运用方式,而不使用 href='javascript:{jscode}' 是为了兼容多种浏览器对 <a> 标签的解释和处理不同. 使用 <a> 标签 + onclick='{jscode}'  时经常会加一个 href='###',而有时这个 href='###' 会被误写为 <a href='#'> 是因为使用者没有理解 '#' 和 '###' 的区别, '#' 是有特定意义的,

截取URL链接中字段的方法

第一个页面像第二个页面传参方法 location.href = "poster.html?" + "name=" + name + "&time=" + time + "&department=" + department; 第二个页面获取参数方法  截取字段 转码即可 //截取链接中的字段 var GetQueryString = function(key) { var reg = new RegExp(&q

JS 获取链接中的参数

1.获取链接全部参数,以对象的形式返回 //获取url中参数 function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&"); for (var i =

http链接中请求进行编码,Http请求

1 如果参数中含有特殊字符&,则强制URL编码<br> 2 3 http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割.如"?name1=value1&name2=value2",这样在服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值, 在计算机中使用用ASCII码表示 4 5 如果我的参数值中就包含=或&这种特殊字

微信朋友圈视频链接中的视频怎么下载到电脑?

[操作方法及原理]:将视频链接发送到电脑,使用工具下载链接中的视频到自己电脑. http://jingyan.baidu.com/article/48b37f8d3fd09a1a6464882d.html 维棠 将视频链接中的视频进行下载