テストページがあります: http://benfrain.com/playground/svg-test/
その上に、同じ SVG をいくつかの方法 (img、object、inline、および background image) に挿入しました。
use
また、SVG 内から定義を再利用する方法も実装しました (object
挿入方法と「インライン」挿入方法のみ)。
コンソールでは、各挿入メソッドから SVG コンテンツにアクセスしようとしていることがわかります (スクリプトを介して img と背景画像にアクセスできないことはわかっています。要点を証明しているだけです)。
ただし、Internet Explorer (IE9+) のどのバージョンでも、object
挿入方法は外部 CSS の読み込みに失敗する(コメントに記載されているように、IEには代替リンクメカニズムが必要です)内部から参照され(xlinkを介して、機能していれば6px幅のストロークが表示されます)、それはJavaScript 経由ではアクセスできません (他のすべてのエバーグリーン ブラウザで動作します)(私の間違い)。
誰でも理由を明確にできますか?http://www.w3.org/TR/html5/embedded-content-0.html#the-object-elementの仕様に目を通してみましたが、いくつかの専門的事項は私の理解を超えていることを告白しなければなりません。
更新: 以下の Robert のコメントに加えて、上記のテスト ページにいくつかの調整を加えました。
まず、スクリプトでオブジェクトにアクセスできます (初歩的なミス)。ただし、奇妙な点はまだたくさんあります。
SVG にこの形式のリンクがある場合: <?xml-stylesheet href="styles.css" type="text/css"?>
IE11 は、img、background-image、inline、または object を介してページに挿入されているかどうかにかかわらず、そのスタイルシート内のスタイルを SVG に適用します (Safari/Firefox/Chrome は、 SVG はインラインまたは経由で挿入されますobject
)。