2015-02-06 53 views
0

假设我有它具有以下DEFS的SVG:SVG:当SVG在Object中访问defs HTML项时?

<svg width="179" height="170" viewBox="0 0 179 170" xmlns="http://www.w3.org/2000/svg"> 
    <title>Star 1</title> 
    <defs> 
     <g id="shape"> 
      <rect x="50" y="50" width="50" height="50" /> 
     </g> 
    </defs> 
    <g fill="none" fill-rule="evenodd"> 
     <path stroke="#979797" fill="#D8D8D8" d="M89.5 140.25l-54.958 28.893 10.496-61.196L.576 64.607l61.445-8.93L89.5 0l27.48 55.678 61.444 8.93-44.462 43.34 10.496 61.195z" /> 
    </g> 
</svg> 

我包括SVG的HTML文档中使用对象的标签。例如:

<object type="image/svg+xml" data="star.svg" class="svgObjectWrapper"> 
    Your browser doesn't support SVG 
</object> 

是否有任何方式,在HTML文档中,引用/使用那些DEFS从SVG(其又在对象内部)。例如,这似乎并不奏效。这应该是可能的吗?

<use xlink:href="#shape" x="50" y="50" /> 

我的猜测是否定的,但我想确定。

回答

0

由于< object>将svg加载到单独的文档中,因此无法使用顶级文档中的本地引用(如<use xlink:href="#shape"/>)来访问其他文档中的资源。尽管如此,可以使用<来引用外部资源,例如<use xlink:href="star.svg#shape"/>。请注意,这还并不意味着,如果你改变了<对象中的元素是相同的文档,在<对象>,e.g>元素,它将对<use xlink:href="star.svg#shape"/>没有影响。

+0

嗨艾瑞克,谢谢。最后一点的进一步澄清。你是说如果我使用一个参考这样的防守力:'<使用XLink:HREF =“#star.svg形” X =“50” Y =“50” />'到形状放置在HTML,然后,通过脚本,修改通过脚本#shape(对象内部的一个),插入#shape(一个放置在页面上)不会改变更新吗?这是有道理的,只是想确定我是对的! – 2015-02-06 10:14:04

+0

你有这个权利。 – 2015-02-06 10:19:49

+0

谢谢罗伯特。 :) – 2015-02-06 10:20:43

1

有可能在支持它的UA(Firefox没有例如)和你,如果你想要的是通过<use>引用文档甚至不需要对象标记。

每要从即

<use xlink:href="star.svg#shape" x="50" y="50" /> 

star.svg使用这些数据你可以把在文件的URL SVG规范必须是在同一个域作为你的HTML文件。

+0

嗨罗伯特,我知道这一点。不过,我特别感兴趣的是SVG是否可以在对象标签中使用。 – 2015-02-06 09:55:12

+0

不,根据我的答案,没有理由支持这一点。 – 2015-02-06 09:58:14

+0

啊,我的歉意,我最初错误地阅读你的答案,错过了修正后的href。 – 2015-02-06 10:09:31