HTML中的base標(biāo)簽使用詳解
在requireJS中,有一個屬性叫baseURL,通過設(shè)置baseURL,我們可以將需要加載的文件路徑寫成相對于項目的,而不是相對于當(dāng)前頁面的。
例如:假設(shè)我們的項目目錄是/myproject/,里面有兩個頁面,一個是/myproject/one.html,另一個是/myproject/html/other.html,他們都要加載/myproject/js/some.js。如果我們將baseURL設(shè)置成/myproject/,則我們在加載該js的時候,這兩個頁面都可以使用相對于項目的路徑./js/some,而不是因為頁面的路徑不同而使用不同的相對路徑。
但是如果不使用requireJS,我們能不能實現(xiàn)類似于baseURL的功能呢?
base標(biāo)簽
其實,HTML中有一個base標(biāo)簽,可以產(chǎn)生類似的功能。舉個例子:
<html>
<head>
<base />
</head>
<body>
<img src="./images/logo_gray.gif" />
</body>
</html>
我們會發(fā)現(xiàn),我們用相對路徑./images/logo_gray.gif加載的圖片,卻變成了http://static.cnblogs.com/images/logo_gray.gif的圖片。
base標(biāo)簽可以給頁面的鏈接加上默認的路徑,或者默認的打開方式。
下面是一個設(shè)置默認打開方式的例子:
<html>
<head>
<base target="_blank" />
</head></p> <p><body>
<a >這個頁面會在新窗口打開</a>
<a >這個頁面也會在新窗口打開</a>
</body>
</html>
一個BUG
base標(biāo)簽最好不要動態(tài)寫入,否則在Firefox和IE中會有一個小bug,比如對于頁面http://localhost/static/test.html:
<html>
<head>
<script>
document.write('<base href="http://localhost/" />');
</script>
</head></p> <p><body>
<img src="static/1.jpg" />
</body>
</html>
Firefox和IE中會先加載http://localhost/static/static/1.jpg,然后再加載http://localhost/static/1.jpg。也就是說,他們都先嘗試用相對于當(dāng)前頁面的路徑進行加載,然后再通過base標(biāo)簽設(shè)置的默認路徑加載。

Chrome的加載正常。

Firefox的加載不正常。
Why?
這個我們并沒有找到很好的解釋,我們的分析是瀏覽器對資源加載進行了優(yōu)化,導(dǎo)致動態(tài)插入base標(biāo)簽并未生效時,就預(yù)先去加載了,結(jié)果出錯,然后base標(biāo)簽生效于是又加載正確的資源。
如何避免呢?不動態(tài)寫入base標(biāo)簽?zāi)敲淳蜎]有任何問題。如果需要動態(tài)寫入base標(biāo)簽,那么頁面所有引用的外部資源都需要通過Javascript動態(tài)加載。
相關(guān)文章
我的css框架——base.css(重設(shè)瀏覽器默認樣式)
有自己css框架在網(wǎng)頁布局過程中會顯得相當(dāng)容易,本文提供的是本人的經(jīng)驗之談主要功能在于重設(shè)瀏覽器默認樣式,熱愛布局的你可千萬不要錯過了哈,希望可以幫助到你2013-03-19HTML5本地存儲之Database Storage應(yīng)用介紹
實際上,除了sessionStorage和localStorage外,HTML5還支持通過本地數(shù)據(jù)庫進行本地數(shù)據(jù)存儲,HTML5采用的是"SQLLite"這種文件型數(shù)據(jù)庫,該數(shù)據(jù)庫多集中在嵌入式設(shè)備上,熟2013-01-06HTML5 Web Database 數(shù)據(jù)庫的SQL語句的使用方法
本文將詳細介紹HTML5 Web Database 數(shù)據(jù)庫的SQL語句的使用方法,需要了解的朋友可以參考下2012-12-09HTML5教程之html 5 本地數(shù)據(jù)庫(Web Sql Database)
HTML5的Web SQL Databases(html5 本地數(shù)據(jù)庫)的確很唬人,當(dāng)你發(fā)現(xiàn)可以用與mysql查詢一樣的查詢語句來操作本地數(shù)據(jù)庫時,你會發(fā)現(xiàn)這東西挺有趣的,今天,我們一起來了解HT2014-04-03Web數(shù)據(jù)存儲淺析 Cookie、UserData、SessionStorage、WebSqlDatabase
淺析Web數(shù)據(jù)存儲-Cookie、UserData、SessionStorage、WebSqlDatabase 的使用方法。2010-08-06- 當(dāng)點了鏈接后,跳出的網(wǎng)頁地址是http://www.webjx.com/web/或http://www.webjx.com/css/,它就是在這些相對路徑的文件前加上基鏈接指向的地址。如果目標(biāo)文件中的鏈接沒有指2008-10-17
CSS標(biāo)準(zhǔn):vertical-align屬性
原文:http://www.mikkolee.com/13 最近幾天仔細研究了一下vertical-align這個屬性,結(jié)果讓我大吃一驚,這個很“資深”的CSS標(biāo)準(zhǔn)竟然在各個瀏覽器里面的表現(xiàn)2008-10-17

