HTML网页中的URL表示方式

所属分类: 网页制作 / HTML/Xhtml 阅读数: 337
收藏 0 赞 0 分享
在HTML中,常见的URL有多种表示方式:
相对URL:

复制代码
代码如下:

example.php
demo/example.php
./example.php
../../example.php
/example.php

绝对URL:

复制代码
代码如下:

http://jb51.net/example.php
http://jb51.net:80/example.php
https://jb51.net/example.php

同时HTML中有大量的元素属性值为URL,一般利用JavaScript获取这些URL属性值有两种方法:

复制代码
代码如下:

<a href="example.php" id="example-a">此时页面绝对URL是http://jb51.net/</a>
<script>
var oA = document.getElementById('example-a');
oA.href == 'http://jb51.net/example.php';
oA.getAttribute('href') == 'example.php';
</script>

我们希望通过直接访问属性的方式得到完整绝对URL,通过getAttribute方法得到其原始的属性值,实际上这是一个比较理想的结果,在所有的A级浏览器中,能顺利得到这个结果的只有Firefox和IE8,其他浏览器都或多或少特殊情况,具体哪些元素的属性存在什么样的情况请看 演示实例 。
在大部分浏览器中存在的问题是,两种方式都返回的是原始属性值,而实际应用中往往需要的是其绝对的URL,《Dealing with unqualified HREF values》中的解决方案太过于复杂,这里提供一种相对简单的解决方案,如果不考虑区别浏览器代码会非常简单:
<form action="example.php" id="example-form">
此时页面绝对URL是http://jb51.net/</form>

复制代码
代码如下:

<script>
var oForm = document.getElementById('example-form');
//IE6、IE7、Safari、Chrome、Opera
oForm.action == 'example.php';
oA.getAttribute('action') == 'example.php';
//获取绝对URL的通用解决方案
getQualifyURL(oForm,'action') == 'http://jb51.net/example.php';
getQualifyURL = function(oEl,sAttr){
var sUrl = oEl[sAttr],
oD,
bDo = false;
//是否是IE8之前版本
//http://www.thespanner.co.uk/2009/01/29/detecting-browsers-javascript-hacks/
//http://msdn.microsoft.com/en-us/library/7kx09ct1%28VS.80%29.aspx
/*@cc_on
try{
bDo = @_jscript_version < 5.8 ?true : @false;
}catch(e){
bDo = false;
}
@*/
//如果是Safari、Chrome和Opera
if(/a/.__proto__=='//' || /source/.test((/a/.toString+''))
|| /^function \(/.test([].sort)){
bDo = true;
}
if(bDo){
oD = document.createElement('div');
/*
//DOM 操作得到的结果不会改变
var oA = document.createElement('a');
oA.href = oEl[sAttr];
oD.appendChild(oA);
*/
oD.innerHTML = ['<a href="',sUrl,'"></a>'].join('');
sUrl = oD.firstChild.href;
}
return sUrl;
}
</script>

在IE6和IE7这两个史前的浏览器身上还有一些更有意思的事情,两种方法在HTML元素A、AREA和IMG获取的属性值都是绝对URL,幸好 微软为getAttribute提供了第二个参数 可以解决这个问题,同时还可以对IFEAM和LINK元素解决前面提到的两种方法都返回原始属性的问题:

复制代码
代码如下:

<link href="../../example.css" id="example-link">
<a href="example.php" id="example-a">此时页面绝对URL是http://jb51.net/</a>
<script>
var oA = document.getElementById('example-a'),
oLink = document.getElementById('example-a');
oA.href == 'http://jb51.net/example.php';
oA.getAttribute('href') == 'http://jb51.net/example.php';
oA.getAttribute('href',2) == 'example.php';
oLink.href == 'example.php';
oLink.getAttribute('href') == 'example.php';
oLink.getAttribute('href',4) == 'http://jb51.net/example.php';
</script>
更多精彩内容其他人还在看

被遗忘掉的button标签

注:这篇文章已经有人翻译过重新认识button 标签,但是感觉其中有很多地方值得推敲,不太好理解。因此本人结合个人学习体会重新翻译而成此文。 英文原文:http://particletree.com/features/rediscovering-the-button-elemen
收藏 0 赞 0 分享

标记语言——标题

点击这里返回网页教学网 HTML教程 栏目. 上文:Chapter1 清单 原文出处 标准化设计解决方案 - 标记语言和样式手册 Web Standards Solutions The Markup and Style Handbook Part 1:
收藏 0 赞 0 分享

改进网站设计提供的有意的建议

科学设计你的网站网页:来自 Eye-Tracking研究的23节必修课——Christina Laun 在网络设计领域关于Eye-Tracking的研究十分火爆,但是如何把这些研究结果转变为具体可行的设计来运作依旧是个难点。以下就是一些来自于Eye-
收藏 0 赞 0 分享

网页教案,针对初学者的教案

教学主题 网页 适用年级
收藏 0 赞 0 分享

多个HTML页面共同调用一段html代码的方法

这篇文章主要介绍了多个HTML页面共同调用一段html代码的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

提交表单后转到另一个文件

问题:在HTML中如何写跳转到某文件? HTML中我希望按了提交后转到aaa.asp这个文件,action这里应该怎么写? form<form id="form" name="form" method="post
收藏 0 赞 0 分享

表格标签(table)深入了解

表格(table)是一直以来长期被大家使用的标签,直到现在还是在用,不过呢因为现在的网站重构,建议大家不要表格(table)来布局而很多朋友误以为用表格(table)就是所谓的不标准了,其实不然,表格(table)是一个重要元素。 前不久为了寻找表格(table)所包含的主
收藏 0 赞 0 分享

容易混淆使用位置的XHTML标签

  我们在webjx.com的文章中一直在强调语义,那么对于HTML标签该如何使用呢?他们一般的使用位置在哪里呢?   在刚接触XHTML CSS设计网页时,对于标签的使用没什么经验,也很随意,经常是想起什么就用什么,认为只要能实现效果就可以。但随着学习的深入和对搜索引擎优
收藏 0 赞 0 分享

类型File的Input按钮功能研究

在一些网站进行上传时,当单击了“浏览”按钮之后会弹出【选择文件】的对话框。很多时候我们需要只上传图像文件,那么在弹出的【选择文件】对话框中只显示了相关图片格式的文件,此外其余格式文件一律过滤不被显示。 比如 http://www.youku.com/
收藏 0 赞 0 分享

ul列表标记设计网页多列布局

几天在用CSS写三列布局的时候突然想到的这样一个方法,这个想法自己都觉得有些疯狂,如果其中有什么不对的地方请各位不吝指教。   当需要写一个三列布局的时候,一般情况下我会选择使用如下的DIV布局方式:
收藏 0 赞 0 分享
查看更多