HTML網(wǎng)頁中的URL表示方式
發(fā)布時(shí)間:2009-07-30 00:12:04 作者:佚名
我要評論
在HTML中獲取正確的URL屬性值.
在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
同時(shí)HTML中有大量的元素屬性值為URL,一般利用JavaScript獲取這些URL屬性值有兩種方法:
<a href="example.php" id="example-a">此時(shí)頁面絕對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方法得到其原始的屬性值,實(shí)際上這是一個(gè)比較理想的結(jié)果,在所有的A級瀏覽器中,能順利得到這個(gè)結(jié)果的只有Firefox和IE8,其他瀏覽器都或多或少特殊情況,具體哪些元素的屬性存在什么樣的情況請看 演示實(shí)例 。
在大部分瀏覽器中存在的問題是,兩種方式都返回的是原始屬性值,而實(shí)際應(yīng)用中往往需要的是其絕對的URL,《Dealing with unqualified HREF values》中的解決方案太過于復(fù)雜,這里提供一種相對簡單的解決方案,如果不考慮區(qū)別瀏覽器代碼會(huì)非常簡單:
<form action="example.php" id="example-form">
此時(shí)頁面絕對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 操作得到的結(jié)果不會(huì)改變
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這兩個(gè)史前的瀏覽器身上還有一些更有意思的事情,兩種方法在HTML元素A、AREA和IMG獲取的屬性值都是絕對URL,幸好 微軟為getAttribute提供了第二個(gè)參數(shù) 可以解決這個(gè)問題,同時(shí)還可以對IFEAM和LINK元素解決前面提到的兩種方法都返回原始屬性的問題:
<link href="../../example.css" id="example-link">
<a href="example.php" id="example-a">此時(shí)頁面絕對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>
相對URL:
復(fù)制代碼
代碼如下:example.php
demo/example.php
./example.php
../../example.php
/example.php
絕對URL:
復(fù)制代碼
代碼如下:http://jb51.net/example.php
http://jb51.net:80/example.php
https://jb51.net/example.php
同時(shí)HTML中有大量的元素屬性值為URL,一般利用JavaScript獲取這些URL屬性值有兩種方法:
復(fù)制代碼
代碼如下:<a href="example.php" id="example-a">此時(shí)頁面絕對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方法得到其原始的屬性值,實(shí)際上這是一個(gè)比較理想的結(jié)果,在所有的A級瀏覽器中,能順利得到這個(gè)結(jié)果的只有Firefox和IE8,其他瀏覽器都或多或少特殊情況,具體哪些元素的屬性存在什么樣的情況請看 演示實(shí)例 。
在大部分瀏覽器中存在的問題是,兩種方式都返回的是原始屬性值,而實(shí)際應(yīng)用中往往需要的是其絕對的URL,《Dealing with unqualified HREF values》中的解決方案太過于復(fù)雜,這里提供一種相對簡單的解決方案,如果不考慮區(qū)別瀏覽器代碼會(huì)非常簡單:
<form action="example.php" id="example-form">
此時(shí)頁面絕對URL是http://jb51.net/</form>
復(fù)制代碼
代碼如下:<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 操作得到的結(jié)果不會(huì)改變
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這兩個(gè)史前的瀏覽器身上還有一些更有意思的事情,兩種方法在HTML元素A、AREA和IMG獲取的屬性值都是絕對URL,幸好 微軟為getAttribute提供了第二個(gè)參數(shù) 可以解決這個(gè)問題,同時(shí)還可以對IFEAM和LINK元素解決前面提到的兩種方法都返回原始屬性的問題:
復(fù)制代碼
代碼如下:<link href="../../example.css" id="example-link">
<a href="example.php" id="example-a">此時(shí)頁面絕對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>
相關(guān)文章

HTML img標(biāo)簽和超鏈接標(biāo)簽詳細(xì)介紹
文章介紹了HTML中img標(biāo)簽的使用,包括src屬性(指定圖片路徑)、相對/絕對路徑區(qū)別、alt替代文本、title提示、寬高控制及邊框設(shè)置等,本文主要給大家介紹HTML img標(biāo)簽和超鏈2025-06-20HTML中meta標(biāo)簽的常見使用案例(示例詳解)
HTML meta標(biāo)簽用于提供文檔元數(shù)據(jù),涵蓋字符編碼、SEO優(yōu)化、社交媒體集成、移動(dòng)設(shè)備適配、瀏覽器控制及安全隱私設(shè)置,優(yōu)化頁面顯示與搜索引擎索引,本文給大家介紹HTML中meta2025-06-20
input 標(biāo)簽主要用于接收用戶的輸入,隨 type 屬性值的不同,變換其具體功能,本文通過實(shí)例圖文并茂的形式給大家介紹HTML input 標(biāo)簽,感興趣的朋友一起看看吧2025-06-20
html 滾動(dòng)條滾動(dòng)過快會(huì)留下邊框線的解決方案
這篇文章主要介紹了html 滾動(dòng)條滾動(dòng)過快會(huì)留下邊框線的解決方案,解決方法很簡單,可以將 dialog 單獨(dú)拿出來別放在 transform 的子元素里,需要的朋友可以參考下2025-06-09- 本文將介紹如何使用<img>標(biāo)簽在 HTML 中添加圖片,并展示一些常見的用法和技巧,通過本文的介紹,應(yīng)該掌握了在 HTML 中添加和調(diào)整圖片的基礎(chǔ)知識,感興趣的朋友一起看2025-05-16
- HTML表格用于在網(wǎng)頁上展示數(shù)據(jù),通過標(biāo)簽及其相關(guān)標(biāo)簽來創(chuàng)建,表格由行和列組成,每一行包含一個(gè)或多個(gè)單元格,單元格可以包含文本、圖像、鏈接等元素,本文將詳細(xì)介紹HTML表格2025-03-12
- 本文介紹了三種禁止HTML頁面滾動(dòng)的方法:通過CSS的overflow屬性、使用JavaScript的滾動(dòng)事件監(jiān)聽器以及使用CSS的position:fixed屬性,每種方法都有其適用場景和優(yōu)缺點(diǎn),感興2025-02-24

使用HTML和CSS實(shí)現(xiàn)文字鏤空效果的代碼示例
在 Web 開發(fā)中,文本的視覺效果是提升用戶體驗(yàn)的重要因素之一,通過 CSS 技巧,我們可以創(chuàng)造出許多獨(dú)特的效果,例如文字鏤空效果,本文將帶你一步一步實(shí)現(xiàn)一個(gè)簡單的文字鏤空2024-11-17
Html去除a標(biāo)簽的默認(rèn)樣式的操作代碼
在Html中,a標(biāo)簽?zāi)J(rèn)的超鏈接樣式是藍(lán)色字體配下劃線,這可能不滿足所有設(shè)計(jì)需求,如需去除這些默認(rèn)樣式,可以通過CSS來實(shí)現(xiàn),本文給大家介紹Html去除a標(biāo)簽的默認(rèn)樣式的操作代碼2024-09-25HTML文本域如何設(shè)置為禁止用戶手動(dòng)拖動(dòng)
在HTML中,可以通過設(shè)置CSS的resize屬性為none,來禁止用戶手動(dòng)拖動(dòng)文本域(textarea)的大小,這種方法簡單有效,適用于大多數(shù)現(xiàn)代瀏覽器,但需要在老舊瀏覽器中進(jìn)行測試以確保2024-09-25





