在 Safari/Firefox 上,悬停一段时间后,我收到此错误消息(使用https://raw.github.com/DmitryBaranovskiy/raphael/master/raphael.js处的未压缩源):
`raphael.js`, line 2946: `e.totalOrigin is undefined`
唯一设置的地方totalOrigin
是runAnimation
函数:
line 3072: function runAnimation(anim, element, percent, status, totalOrigin, times) {
您的代码首先调用elproto.pause()
(第 3352 行),然后elproto.resume()
(第 3361 行)。pause()
将paused
属性设置为 true,resume()
删除此属性。但也在删除标志后立即resume
调用该方法:status()
paused
var e = animationElements[i];
if (eve("raphael.anim.resume." + this.id, this, e.anim) !== false) {
delete e.paused;
this.status(e.anim, e.status);
}
奇怪的正在进行的elproto.status
方法(第 3323 行)仅由elproto.setTime()
and调用elproto.resume()
。这个函数构造了一些复杂的返回值,但没有活动代码使用它的返回值,只有从第 2980 行开始的注释掉的行。
runAnimation
如果该函数有参数,该函数也会调用该函数value
:
runAnimation(anim, this, -1, mmin(value, 1) );
totalOrigin should be passed here! ^^^
不幸的是,它没有传递任何东西totalOrigin
,这就是错误的原因。
我尝试totalOrigin
根据第 3312 行添加一个参数:
runAnimation(anim, this, -1, mmin(value, 1), this.attr());
虽然它似乎有效,但它会出错。
作为第二次尝试,我注释掉了整行:
// runAnimation(anim, this, -1, mmin(value, 1));
结果:它可以工作,但是时间不对,可能动画开始时间应该在某个地方更新。
http://jsfiddle.net/7nGcR/26/
https://raw.github.com/gist/3067995/1e82de48eeacf98697b572efdc74c11a9b1d9d03/gistfile1.js