与SVG元素一起创建的不需要的SVGAnimatedString

时间:2014-08-08 11:25:42

标签: javascript android html svg webview

我的应用使用WebView在显示的HTML文档中注入一些HTML元素。它可以将多边形注入SVG元素(绝对位置)作为子项。它将上述元素的class属性设置为特殊值,以便在执行某些Javascript操作时对其进行过滤。

svg=document.createElementNS('http://www.w3.org/2000/svg','svg');
svg.setAttribute('class',SPECIAL_CLASS);
...
child=document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
child.setAttribute('class',SPECIAL_CLASS);
...
svg.appendChild(child);
document.body.appendChild(svg);

不幸的是,我发现创建了SVGAnimatedString不需要的元素。我不确定它们是什么,但它们肯定是与注入的SVG元素一起创建的。我可以过滤它们,但我不能确定Web文档没有合法的SVGAnimatedString或其他必须处理的类似元素。

如何避免创建那些不需要的元素?它们是什么?我可以根据SVG元素放置在其他HTML元素上的位置找到其他类似的元素吗?

2 个答案:

答案 0 :(得分:0)

在SVG类中,可设置元素的属性(svg和polygon是可定制的)由SVGAnimatedString类型建模。

interface SVGStylable {

  readonly attribute SVGAnimatedString className;
  readonly attribute CSSStyleDeclaration style;

  CSSValue getPresentationAttribute(in DOMString name);
};

答案 1 :(得分:0)

那些"不想要的" SVGAnimatedString元素只是应用程序创建的SVG元素,只是它们的className产生字符串SVGAnimatedString作为值。 SVG的className似乎是只读的,所以我使用另一个属性来标记这些元素:

svgElement.setAttributeNS('http://www.myNS.com/myNS',ATTRIBUTE_NAME,value);

svgElement.getAttributeNS('http://www.myNS.com/myNS',ATTRIBUTE_NAME);