哪个SVG / SMIL DOM元素有`beginElement`方法?

最终这是针对将在Firefox中运行的Kiosk风格的应用程序(使用jQuery 1.6.4),因此答案可以是特定于Firefox的。

我正在尝试制作一个动画SVG,但我试图通过动态插入SMIL来动画它。 我没有看到任何暗示无法完成的事情,并且http://satreth.blogspot.ch/2013_01_01_archive.html和http://srufaculty.sru.edu/david.dailey/svg/SMILorJavaScript.svg似乎都表示它可以做到。

我理解的问题是我需要调用beginElement方法来启动动态插入的动画,但我没有在任何地方看到它。

这是一个演示问题的小提琴: http : //jsfiddle.net/2pvSX/

未能回答标题中的问题:

  1. 我究竟做错了什么?
  2. 是否有任何资源可以更好地了解我正在尝试做什么?

这是一个问题:

  1. 我是如何定义SVG的?
  2. 我是如何创建SMIL的?
  3. 我是如何访问SVG的?
  4. 我是如何插入SMIL的?
  5. 还有别的吗?

最后,有没有更好的方法来动画SVG?

你需要添加'http://www.w3.org/2000/svg'来创建这样的动画元素

 $(document).ready(function () { var svg = $('svg').get(0), square = svg.getElementById('red'), animation = document.createElementNS('http://www.w3.org/2000/svg', 'animateMotion'); animation.setAttributeNS(null, 'id', 'walker'); animation.setAttributeNS(null, 'begin', 'indefinite'); animation.setAttributeNS(null, 'end', 'indefinite'); animation.setAttributeNS(null, 'dur', '10s'); animation.setAttributeNS(null, 'repeatCount', 'indefinite'); animation.setAttributeNS(null, 'path', 'M 0 0 H 800 Z'); square.appendChild(animation); console.log(animation); console.log(typeof animation.beginElement); animation.beginElement(); }); 

同时删除此行animation = svg.children[1].children[0].children[1]; 所以animation元素有beginElement函数
http://jsfiddle.net/2pvSX/1/