4
<%@ Page Language="C#" .. %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<body>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
   <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
</svg> 
 </body>
</html>

/*上記のコードは機能していません。出力が得られません。2行目のDoctypeを以下のように置き換えると、機能します。

<!DOCTYPE html PUBLIC "-// W3C // DTD XHTML 1.0 Transitional // EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">

主な違いを理解するのを手伝ってくれる人はいますか?* /

4

3 に答える 3

6

主な違いは

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

ブラウザにクァークズモードを使用させます。IEは、クァークズモードのSVGをサポートしていません。

一方

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

ブラウザをほぼ標準モードにします。

次のようにシステム識別子を追加するだけで、DoctypeをIE9でSVGを非常に簡単にレンダリングするものに変えることができます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

これがIE10で機能するかどうかはわかりませんが、IE10がHTML5 doctype解析ルールに準拠している場合、上記のdoctypeでもクァークズモードが発生するため、SVGがレンダリングされない可能性があります。

HTML 4.0は、W3C勧告として13年以上前の1999年にHTML 4.01に置き換えられたため、使用する必要のある絶対最小Doctypeは次のとおりです。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

これにより、前述のXHTML doctypeと同じように、HTML5準拠のブラウザーでほぼ標準モードが発生します。しかし、それはHTML3.2からサイトを切り替える人々を対象としていました。

サイトが標準モードで動作することを確認することをお勧めします。これは、次のようなHTML4.01の厳密なDoctypeを使用して行うことができます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

これは現在のW3C勧告ですが、覚えておくのはまだ少し長いです。ブラウザを標準モードにするのと同じ仕事をする最短の文字列は

<!DOCTYPE HTML>

これが、HTML5以降のドキュメントで使用するために選択された理由です。

于 2013-02-08T21:26:20.380 に答える
2

標準のhtml5doctypeは

<!DOCTYPE html>

あなたはそれを使うべきです。

IE 9/10は、 html5ドキュメントとxhtmlドキュメントのSVGのみを表示します。別のDoctypeは、コンテンツをxhtmlとしてマークするため、これが機能します。

于 2013-02-08T12:07:06.613 に答える
1

2つのこと:

  1. Webサーバーが適切なmime-type: "image / svg+xml"でSVGファイルを提供していることを確認してください。古いバージョンのLighttpdでこの問題が発生しました。

  2. X-UA-Compatible Metaタグを追加することで、IEのレンダリングモードをオーバーライドできます。

    <meta http-equiv = "X-UA-Compatible" content = "IE = edge" />

これにより、古いDoctypeを維持しながら、IEが標準モードになります。これはベストプラクティスではありませんが、IE10では機能するようです。

于 2013-04-22T19:16:48.277 に答える