更新链接形状时在 Safari 中使用中断的 SVG clipPath

SVG clipPath with USE breaking in Safari when updating linked shape

我有一个看起来像这样的 SVG:

<svg ...>
  <rect id="clipShape" width="500" height="500"></rect>

  <g id="content" clip-path="url(#clip)">
    <!-- some content -->
  </g>

  <clipPath id="clip">
    <use xlink:href="#clipShape"></use>
  </clipPath>
</svg>

我需要对 #clipSource 进行调整,例如在 SVG 的生命周期中更改 widthheight。但是,例如:

d3.select('#clipShape').attr({ height: "200", width: "200" });

将打破 Safari 中的剪辑。 #content 将被完全隐藏,就好像 clipPath 无效一样。我可以通过不在 xlink 命名空间下设置 use href 来强制执行类似的行为。

我已经在 this fiddle 中捕获了这个问题。我在 Chrome、FF、Opera 或 IE11 中没有看到此问题。

问题:

  1. 我是不是粗鲁地修改了链接的形状?
  2. 如果知道,这是 Safari/WebKit 中的已知错误吗?
  3. 有什么解决方法吗?

据我所知,这是 WebKit 中的一个错误,fiddle 在最新的 nightly (r180500) 中失败。我 reported the bug.

为了解决这个问题,我将 #clipShape 克隆到 clipPath - 当我需要更改 #clipShape.[=14 的任何属性时,根据需要重复此操作=]