最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

HTML中的base標(biāo)簽使用詳解

  發(fā)布時間:2013-04-24 09:50:40   作者:佚名   我要評論
在requireJS中,有一個屬性叫baseURL,通過設(shè)置baseURL,我們可以將需要加載的文件路徑寫成相對于項目的,而不是相對于當(dāng)前頁面的

在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,而不是因?yàn)轫撁娴穆窂讲煌褂貌煌南鄬β窂健?/p>

但是如果不使用requireJS,我們能不能實(shí)現(xiàn)類似于baseURL的功能呢?

base標(biāo)簽
其實(shí),HTML中有一個base標(biāo)簽,可以產(chǎn)生類似的功能。舉個例子:

復(fù)制代碼
代碼如下:

<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)簽可以給頁面的鏈接加上默認(rèn)的路徑,或者默認(rèn)的打開方式。

下面是一個設(shè)置默認(rèn)打開方式的例子:

復(fù)制代碼
代碼如下:

<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:

復(fù)制代碼
代碼如下:

<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)前頁面的路徑進(jìn)行加載,然后再通過base標(biāo)簽設(shè)置的默認(rèn)路徑加載。

Chrome的加載正常。

Firefox的加載不正常。

 

Why?

這個我們并沒有找到很好的解釋,我們的分析是瀏覽器對資源加載進(jìn)行了優(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)文章

最新評論

凤台县| 津市市| 四川省| 汉中市| 平武县| 兖州市| 黑龙江省| 铁岭市| 陇南市| 龙海市| 泊头市| 湘阴县| 望江县| 西宁市| 昆明市| 镇康县| 平武县| 英山县| 习水县| 如皋市| 襄城县| 清原| 峡江县| 玉林市| 芜湖县| 合江县| 略阳县| 察雅县| 若羌县| 东乡| 宾阳县| 高邑县| 青海省| 澄城县| 德令哈市| 高唐县| 白银市| 房山区| 镇赉县| 休宁县| 馆陶县|