2011-06-30 21 views
4

我有一個使用一個base tag來設置相對URL絕對路徑的部位。它在我測試過的所有瀏覽器中都能正常工作,除了IE(很大的驚喜)之外。根據IE爲CSS文件提出的請求,似乎沒有注意到基本標記。它確實承認了頁面上其他所有內容的基本標籤。這是爲什麼發生?除了使用絕對路徑來引用CSS文件外,還可以做任何事情嗎?這裏是我的代碼:引用CSS文件時,IE不支持在基礎元件的相對路徑

<!DOCTYPE html> 
<html><head> 
<title>base test</title> 
<base href="/baseTest/"> 
<link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<body> 
<div>foo</div> 
</body></html> 

這是在baseTest/style.css的文件:

div { 
    background: yellow; 
} 

編輯:同樣的事情似乎發生了圖像了。我所做的所有測試都在IE9中。問題出現在標準模式下,以及IE8和IE7兼容模式。

編輯2:如果我指定一個絕對URL,它工作正常。我不知道對相對URL的支持是最近的一個功能。我可能會放棄使用基本標記的計劃,以避免重複路徑,除非我可以找到某種方式(如可能是JS黑客)來完成此工作。

樣頁:http://www.debugtheweb.com/test/base/relative.html

+0

奇怪,因爲給定的 - 我不能看到的文檔創建樣式表一個特例什麼。看起來像一個錯誤。 [MDC](https://developer.mozilla.org/en/HTML/Element/base) - [W3C](http://www.w3.org/TR/html401/struct/links.html#h-12.4 )你嘗試過哪些版本的IE?你可以嘗試將絕對URL指定爲'base'嗎? –

+0

似乎在最新版本的IE11中受支持。 IE9現在已經有幾年了,可能早於這種支持。 –

回答

7

我不知道,如果這是你在IE或沒有問題,但根據the HTML 4.01 standards document相關部分,在基本href的URL必須是絕對URI。此外,在本例中,給了它看起來是這樣的(上面有一個文件名):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd"> 
<HTML> 
<HEAD> 
    <TITLE>Our Products</TITLE> 
    <BASE href="http://www.aviary.com/products/intro.html"> 
</HEAD> 

<BODY> 
    <P>Have you seen our <A href="../cages/birds.gif">Bird Cages</A>? 
</BODY> 
</HTML> 

在谷歌搜索,我發現的Firefox版本添加了對基本href相對路徑的支持討論(這是什麼你正在使用),這顯然不是一直存在的東西,也不是4.01標準所描述的東西。

HTML5 spec似乎描述並允許基本URL沒有主機部分(主機相對),所以也許這是最近添加到IE尚未支持或尚未完全支持CSS的規範文件加載。

我建議你嘗試將你的域名放在HREF基礎中。

3

根據HTML規格:http://www.w3.org/TR/html401/struct/links.html 參閱:路徑信息:BASE元素部分 - 該屬性指定了一個絕對URI充當基本URI解析相對URI。

鉻和Firefox支持相對路徑在該標籤但是IE沒有。 IE嚴格遵循規範。

操縱和包括在基本標籤absolute url,只包括經過<head>標籤script標籤下面

<script type="text/javascript"> 
document.write("<base href='" + window.location.href.substring(0, location.href 
     .indexOf("/context") + 9) + "' />"); 
</script>