1

このページhttp://emacsformacosx.com/の同じコードが、ローカルの tomcat サーバーでホストされている場合にレンダリングされない理由を知っている人はいますか?

SVG で遊んでみましたが、ローカルで動作するように見えません。何か案は?

4

4 に答える 4

7

このページは XHTML であるため、適切な Content-Type ヘッダーを付けて提供する必要があります。ページが text/html として提供される場合、Firefox と Chrome (私がチェックインしたのは 2 つだけ) は、SVG が機能するために必要な XML 名前空間を認識しません。

ライブページはヘッダー付きで提供されていますが、

Content-Type: text/xml; charset=UTF-8

厳密に言えば、これは正しくありません。私のテストでは、

Content-Type: application/xhtml+xml; charset=UTF-8

正しく表示され、XHTML に適した型です。

サーバー上で Internet Explorer (および XHTML を理解しない他のブラウザー) を検出し、コンテンツ タイプを次のように変更する必要があることに注意してtext/htmlくださいapplication/xhtml+xml。きれいに印刷された XML ドキュメント ツリーが表示されるためtext/xmlです (ただし、時々混乱し、コンテンツ スニッフィングによって HTML を正しく表示することができます)。

編集: codedread が言うように、生の SVG ファイルを提供する場合は、SVG コンテンツ タイプを使用する必要がありますが、この場合、ファイルは実際には別の名前空間にインライン SVG を含む XHTML であるため、XHTML タイプは正しいです。

于 2009-10-21T17:41:18.967 に答える
2

おそらく、SVG に適切な MIME タイプを提供するようにサーバーをセットアップする必要があります: image/svg+xml

詳細はこちら: http://www.planetsvg.com/tools/mime.php

于 2009-10-16T12:42:37.500 に答える
1

NickFitz と codedread が述べたように、埋め込まれた SVG が機能するには、ページを として提供する必要がありますapplication/xhtml+xml。Tomcat でこれを実現するには、少なくとも 3 つの方法があります。

  1. サーバーまたはアプリケーションのweb.xmlを編集して、デフォルトの MIME タイプ、または特定のファイル拡張子のMIME タイプを変更します。
  2. ページが JSP の場合は、ページ ディレクティブで contentType を設定します。
  3. IE ユーザーに対応したい場合は、HTTP リクエストで送信されたヘッダーに基づいて contentType を動的に設定します(モバイル デバイスのコンテキストでこのアプローチをブログに書きました)。HTTP_ACCEPT

または、SVG コンテンツを個別のファイルに分割すると、ページのコンテンツ タイプは問題になりません。IE は SVG をレンダリングしませんが、少なくともページの残りの部分を表示します。ページからすべての SVG とそのページへのリンクを取り除くことができますが、ブラウザの互換性の問題がまだいくつかあります。

最後に、SVG が埋め込まれた静的なページを、サーバーを介さずにローカルのハードディスクから見たいだけの場合は、ファイル拡張子を から.htmlに変更するとうまくいく.xhtmlかもしれません。

于 2009-10-24T21:34:55.307 に答える