自定义元素/ WebComponents是否与SVG一起使用?

时间:2016-11-05 08:03:24

标签: javascript jquery svg polymer web-component

对于CustomElements,我可以这样做:

class MyElement extends HTMLElement {}

我可以为SVG Elements做同样的事吗?像

class MyOwnRectangle extends SVGRectElement {}

如果它有效,我可以让某人为jsbin而烦恼吗?

如果没有,为什么不呢?

这有一些非常好的用例,例如能够在元素本身中存储模型数据。 SVG 操作主要用于两个主要方面:

  1. 动画
  2. ER,组织图,流程等图表。
  3. JointJS这样的库有自己的类抽象(扩展了Backbone View)以存储与视图相关的模型数据(屏幕上的SVG图表。

    像WebComponents最终可以用标准方式替换jQuery插件,Framework X的组件,为什么不对SVG做同样的事情呢?

    最后

    Polymer 0.5如何做到这一点?

    Does Polymer.js support inner SVG elements?

    此修补程序如何在Polymer 1.0中执行此操作?

    https://github.com/Polymer/polymer/pull/3372

    现在有什么选择?

    我想我们可以延长HTMLElement。在我们的ShadowDOM中使用<svg>元素,然后附加我们实际想要扩展的所有SVG标记,如<rect><polyline>等!也许更清洁的方法呢?

    将来会实施吗?

1 个答案:

答案 0 :(得分:2)

根据specification

  

如果result的命名空间不是HTML命名空间,则抛出NotSupportedError。

所有SVG元素都在SVG名称空间中。因此,该规定排除了支持。

在SVG中存储数据的方法包括the <metadata> tagdata- attributes