このページhttp://emacsformacosx.com/の同じコードが、ローカルの tomcat サーバーでホストされている場合にレンダリングされない理由を知っている人はいますか?
SVG で遊んでみましたが、ローカルで動作するように見えません。何か案は?
このページhttp://emacsformacosx.com/の同じコードが、ローカルの tomcat サーバーでホストされている場合にレンダリングされない理由を知っている人はいますか?
SVG で遊んでみましたが、ローカルで動作するように見えません。何か案は?
このページは 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 タイプは正しいです。
おそらく、SVG に適切な MIME タイプを提供するようにサーバーをセットアップする必要があります: image/svg+xml
NickFitz と codedread が述べたように、埋め込まれた SVG が機能するには、ページを として提供する必要がありますapplication/xhtml+xml
。Tomcat でこれを実現するには、少なくとも 3 つの方法があります。
HTTP_ACCEPT
または、SVG コンテンツを個別のファイルに分割すると、ページのコンテンツ タイプは問題になりません。IE は SVG をレンダリングしませんが、少なくともページの残りの部分を表示します。ページからすべての SVG とそのページへのリンクを取り除くことができますが、ブラウザの互換性の問題がまだいくつかあります。
最後に、SVG が埋め込まれた静的なページを、サーバーを介さずにローカルのハードディスクから見たいだけの場合は、ファイル拡張子を から.html
に変更するとうまくいく.xhtml
かもしれません。