8

Internet Explorerが他の何かを表示できるようにSVGでforeignObjectタグのスイッチタグを適切に実装しようとしています(IEでは何も新しいことはなく、常に機能が省略されています)。ドキュメントは、これを行う方法についてほぼ完全に明確です。

<switch>
<!-- Process the embedded XHTML if the requiredExtensions attribute
     evaluates to true (i.e., the user agent supports XHTML
     embedded within SVG). -->
<foreignObject width="100" height="50"
               requiredExtensions="http://example.com/SVGExtensions/EmbeddedXHTML">
  <!-- XHTML content goes here -->
  <body xmlns="http://www.w3.org/1999/xhtml">
    <p>Here is a paragraph that requires word wrap</p>
  </body>
</foreignObject>
<!-- Else, process the following alternate SVG.
     Note that there are no testing attributes on the 'text' element.
     If no testing attributes are provided, it is as if there
     were testing attributes and they evaluated to true.-->
<text font-size="10" font-family="Verdana">
  <tspan x="10" y="10">Here is a paragraph that</tspan>
  <tspan x="10" y="20">requires word wrap.</tspan>
</text>

この例はわかりやすく、requiredExtensions属性の使用方法を示しています。ただし、ハイパーリンク「http://example.com/SVGExtensions/EmbeddedXHTML」は私には無意味です。XHTMLがこのforeignObjectのrequiredExtensionであることを示すために、これの代わりに何を配置する必要がありますか?

4

2 に答える 2

9

何度もいじった後、答えを見つけました。例はおそらくドキュメントに追加する必要があります...私はこれまでIE、FF、およびChromeでテストし、3つすべてがスイッチを適切に処理しました。

「requiredExtensions」属性を使用する代わりに、「requiredFeatures」属性を使用して「http://www.w3.org/TR/SVG11/feature#Extensibility」にリンクしました

したがって、次のようになります。

<switch>
  <foreignObject width="100" height="50" 
                 requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
    <!-- whatever external user-agent stuff -->
  </foreignObject>

  <!-- Alternate SVG content if foreignObject is not supported -->
</switch>

これは、foreignObjectがユーザーエージェントによってサポートされているかどうかをテストするために機能しますが、そのユーザーエージェントがサポートしていない可能性のあるforeignObjectで使用する予定の外部名前空間をまだ示していないため、完全ではありません。しかし、それは何もないよりもうまく機能します。

于 2012-10-19T15:17:20.633 に答える
0

残念ながら、何をすべきかを示す標準はありませんが、Firefoxはhttp://www.w3.org/1999/xhtmlforeignObjectタグ(およびhttp://www.w3.org/1998/Math/MathMLmathml)でxhtmlをサポートすることを示すために使用します。他のUAがこれをコピーした可能性があると思いますが、私はチェックしていません。

于 2012-10-19T14:39:36.693 に答える