2011-06-30 11 views
4

base tagを使用して相対URLの絶対パスを設定するサイトがあります。私はそれをテストしたすべてのブラウザで正常に動作しますが、IE(大きな驚き)は例外です。 IEがCSSファイルに対して行っているリクエストに基づいて、それはベースタグに気付かないようです。それは、ページ上の他のすべてで基本タグを認識します。なぜこうなった?絶対パスを使用してCSSファイルを参照する以外に、何かできることはありますか?ここに私のコードは次のとおりです。IEは、CSSファイルを参照するときにベース要素の相対パスをサポートしていません

div { 
    background: yellow; 
} 

EDIT:

<!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ファイルには何かということです同じことがあまりにもイメージに発生するようです。私がしたすべてのテストはIE9にあった。この問題は、標準モードとIE8とIE7の互換モードで発生しました。

EDIT 2:絶対URLを指定すると正常に動作します。相対URLのサポートが最近の機能であることはわかりませんでした。私は私の計画を放棄するかもしれないが、私はこの仕事をするために何か(JSのハックのような)方法を見つけることができない限り、繰り返しのパスを避けるためにベースタグを使用します。

サンプル・ページ:http://www.debugtheweb.com/test/base/relative.html

+0

ストレンジ以下に示すように、ベースタグにabsolute urlを操作して含めるに

は、ちょうど<head>タグの後のスクリプトタグを含める - 私は、スタイルシートのための特別なケースを作成するドキュメントには何も見ることができません。バグのように見えます。 [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でなければなりません。なお、この例では、それが(その上にファイル名で)次のようになり与えられた:Google検索で

<!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ベースに入れてみることをお勧めします。 HTML仕様によれば

3

http://www.w3.org/TR/html401/struct/links.html は参照:パス情報:BASE素子部 - この属性は、絶対URIを指定する相対URIを解決するためのベースURIとして機能します。

ChromeとFirefoxはこのタグの相対パスをサポートしていますが、IEではサポートされていません。 IEは厳密に仕様に従っています。

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