我的应用使用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元素上的位置找到其他类似的元素吗?
答案 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);