Bonjour,
j'ai fait une animation svg avec le plungin lazylinepainter-1.7.0.js , et tout fonctionne normal sur Firefox et chrome.
Il n'y a que sur IE9 que ne ça ne fonctionne pas.
il m'affiche comme erreur :
SCRIPT5009 : 'cancelAnimationFrame' is undefined
Du coup, je ne vois pas du tout comment le résoudre (fixer) pour que ça fonctionne sur IE9
Voici le code du plungin lazylinepainter-1.7.0 :
(function(h) {
var r = {
init: function(a) {
return this.each(function() {
var c = h(this),
b = c.data("lazyLinePainter");
c.addClass("lazylinepainter");
if (!b) {
var b = h.extend({
strokeWidth: 2,
strokeDash: null,
strokeColor: "#ffffff",
strokeOverColor: null,
strokeCap: "round",
strokeJoin: "round",
strokeOpacity: 1,
onComplete: null,
onUpdate: null,
onStart: null,
onStrokeStart: null,
onStrokeComplete: null,
delay: 0,
ease: null,
overrideKey: null,
drawSequential: !0,
speedMultiplier: 1,
reverse: !1,
paused: !1,
progress: 0,
longestDuration: 0,
playhead: 0
}, a),
d = b.overrideKey ? b.overrideKey : c.attr("id").replace("#", "");
b.width = b.svgData[d].dimensions.width;
b.height = b.svgData[d].dimensions.height;
b.paths = h.extend(!0, [], b.svgData[d].strokepath);
var d = "0 0 " + b.width + " " + b.height,
f = document.createElementNS("http://www.w3.org/2000/svg", "svg");
f.setAttributeNS(null, "viewBox", d);
f.setAttribute("xmlns", "http://www.w3.org/2000/svg");
d = h(f);
b.svg = d;
for (var d = b.delay, e = b.paths, g = f = 0; g < e.length; g++) f += e[g].duration + (e[g].delay || 0);
for (var e = b.delay, g = b.paths, k = 0, l =
0; l < g.length; l++) {
var m = g[l].delay || 0;
g[l].duration + m > k && (k = g[l].duration + m)
}
b.totalDuration = b.drawSequential ? d + f : e + k;
d = b.reverse ? b.totalDuration : 0;
for (f = 0; f < b.paths.length; f++) {
e = b.paths[f];
e.progress = 0;
e.index = f;
var g = e,
k = b,
l = f,
m = document.createElementNS("http://www.w3.org/2000/svg", "path"),
p = h(m);
k.svg.append(p);
p.attr(x(k, k.paths[l]));
g.el = m;
e.length = Math.ceil(e.el.getTotalLength());
e.delay = e.delay || 0;
e.duration = e.duration;
g = e;
k = e.el;
l = e.length;
m = [];
for (p = 0; p < l; p++) {
var n = k.getPointAtLength(p);
m.push({
x: n.x,
y: n.y
})
}
g.positions = m;
e.ease = e.ease || null;
g = e.el.style;
k = b;
l = e.length;
m = void 0;
m = e.strokeDash ? t(e.strokeDash, l) : k.strokeDash ? t(k.strokeDash, l) : l + " " + l;
g.strokeDasharray = m;
e.el.style.strokeDashoffset = e.length;
e.el.style.display = "block";
e.el.getBoundingClientRect();
e.onStrokeStart = e.onStrokeStart || null;
e.onStrokeComplete = e.onStrokeComplete || null;
e.onStrokeStartDone = !1;
e.onStrokeCompleteDone = !1;
e.onStrokeUpdate = e.onStrokeUpdate || null;
k = e.duration / b.totalDuration;
d = b.reverse ? d - e.duration :
b.drawSequential ? b.playhead + b.delay : e.delay + b.delay;
g = d / b.totalDuration;
e.startTime = d;
e.startProgress = g;
e.durationProgress = k;
b.playhead += e.duration + e.delay
}
b.totalDuration *= b.speedMultiplier;
c.append(b.svg);
c.data("lazyLinePainter", b);
c.lazylinepainter("resize")
}
})
},
paint: function() {
return this.each(function() {
var a = h(this),
c = a.data("lazyLinePainter");
a.lazylinepainter("erase");
c.rAF = requestAnimationFrame(function(a) {
q(a, c)
});
if (null !== c.onStart) c.onStart()
})
},
pause: function() {
return this.each(function() {
var a =
h(this).data("lazyLinePainter");
a.paused || (a.paused = !0, cancelAnimationFrame(a.rAF))
})
},
resume: function() {
return this.each(function() {
var a = h(this).data("lazyLinePainter");
a.paused && (requestAnimationFrame(function(c) {
y(c, a)
}), a.paused = !1)
})
},
erase: function() {
return this.each(function() {
var a = h(this).data("lazyLinePainter");
a.startTime = null;
a.elapsedTime = null;
cancelAnimationFrame(a.rAF);
a.onStrokeCompleteDone = !1;
a.paused = !1;
for (var c = 0; c < a.paths.length; c++) {
var b = a.paths[c];
b.el.style.strokeDashoffset =
b.length;
b.onStrokeCompleteDone = !1;
b.onStrokeStartDone = !1
}
})
},
destroy: function() {
return this.each(function() {
var a = h(this);
a.removeData("lazyLinePainter");
a.empty();
a.removeClass("lazylinepainter")
})
},
set: function(a) {
return this.each(function() {
var c = h(this).data("lazyLinePainter");
c.progress = a;
u(c)
})
},
get: function() {
return h(this).data("lazyLinePainter")
},
resize: function() {
this.each(function() {
var a = h(this),
c = a.data("lazyLinePainter");
c.offset = a.offset();
for (a = 0; a < c.paths.length; a++) v(c, c.paths[a])
})
}
},
y = function(a, c) {
c.startTime = a - c.elapsedTime;
requestAnimationFrame(function(a) {
q(a, c)
})
},
q = function(a, c) {
c.startTime || (c.startTime = a);
if (null !== c.onUpdate) c.onUpdate();
c.elapsedTime = a - c.startTime;
c.progress = w(c.totalDuration, c.startTime, c.elapsedTime, c.ease);
u(c);
if (1 > c.progress) c.rAF = requestAnimationFrame(function(a) {
q(a, c)
});
else if (null !== c.onComplete) c.onComplete()
},
u = function(a) {
for (var c = 0; c < a.paths.length; c++) {
var b = a.paths[c],
d = void 0;
a.progress > b.startProgress && a.progress < b.startProgress +
b.durationProgress ? d = (a.progress - b.startProgress) / b.durationProgress : a.progress >= b.startProgress + b.durationProgress ? d = 1 : a.progress <= b.startProgress && (d = 0);
b.progress = w(1, 0, d, b.ease);
var d = b,
f = d.progress * d.length;
d.el.style.strokeDashoffset = a.reverse || d.reverse ? -d.length + f : d.length - f;
v(a, b);
d = a;
if (1 === b.progress) d.onStrokeComplete && !b.onStrokeCompleteDone && (d.onStrokeComplete(b), b.onStrokeComplete || (b.onStrokeCompleteDone = !0)), b.onStrokeComplete && !b.onStrokeCompleteDone && (b.onStrokeComplete(b), b.onStrokeCompleteDone = !0);
else if (1E-5 < b.progress && (d.onStrokeStart && !b.onStrokeStartDone && (d.onStrokeStart(b), b.onStrokeStart || (b.onStrokeStartDone = !0)), b.onStrokeStart && !b.onStrokeStartDone && (b.onStrokeStart(b), b.onStrokeStartDone = !0), b.onStrokeUpdate)) b.onStrokeUpdate(b)
}
},
w = function(a, c, b, d) {
var f;
0 < b && b < a ? f = d ? n[d](b, 0, 1, a) : b / a : b >= a ? f = 1 : b <= c && (f = 0);
return f
},
v = function(a, c) {
var b = Math.round(c.progress * (c.length - 1)),
b = c.positions[b];
c.position = {
x: a.offset.left + b.x,
y: a.offset.top + b.y
}
},
x = function(a, c) {
return {
d: c.path,
stroke: c.strokeColor ? c.strokeColor : a.strokeColor,
"fill-opacity": 0,
"stroke-opacity": c.strokeOpacity ? c.strokeOpacity : a.strokeOpacity,
"stroke-width": c.strokeWidth ? c.strokeWidth : a.strokeWidth,
"stroke-linecap": c.strokeCap ? c.strokeCap : a.strokeCap,
"stroke-linejoin": c.strokeJoin ? c.strokeJoin : a.strokeJoin
}
},
t = function(a, c) {
for (var b = "", d = a.split(","), f = 0, e = d.length - 1; 0 <= e; e--) f += Number(d[e]);
d = Math.floor(c / f);
for (e = d - 1; 0 <= e; e--) b += a + ", ";
return (b + (c - d * f) + ", " + c).split(",").join("px,") + "px"
};
h.fn.lazylinepainter =
function(a) {
if (r[a]) return r[a].apply(this, Array.prototype.slice.call(arguments, 1));
if ("object" !== typeof a && a) console.log("opps - issue finding method");
else return r.init.apply(this, arguments)
};
var n = {
easeLinear: function(a, c, b, d) {
return b * a / d + c
},
easeInQuad: function(a, c, b, d) {
return b * (a /= d) * a + c
},
easeOutQuad: function(a, c, b, d) {
return -b * (a /= d) * (a - 2) + c
},
easeInOutQuad: function(a, c, b, d) {
return 1 > (a /= d / 2) ? b / 2 * a * a + c : -b / 2 * (--a * (a - 2) - 1) + c
},
easeInCubic: function(a, c, b, d) {
return b * (a /= d) * a * a + c
},
easeOutCubic: function(a,
c, b, d) {
return b * ((a = a / d - 1) * a * a + 1) + c
},
easeInOutCubic: function(a, c, b, d) {
return 1 > (a /= d / 2) ? b / 2 * a * a * a + c : b / 2 * ((a -= 2) * a * a + 2) + c
},
easeInQuart: function(a, c, b, d) {
return b * (a /= d) * a * a * a + c
},
easeOutQuart: function(a, c, b, d) {
return -b * ((a = a / d - 1) * a * a * a - 1) + c
},
easeInOutQuart: function(a, c, b, d) {
return 1 > (a /= d / 2) ? b / 2 * a * a * a * a + c : -b / 2 * ((a -= 2) * a * a * a - 2) + c
},
easeInQuint: function(a, c, b, d) {
return b * (a /= d) * a * a * a * a + c
},
easeOutQuint: function(a, c, b, d) {
return b * ((a = a / d - 1) * a * a * a * a + 1) + c
},
easeInOutQuint: function(a, c, b, d) {
return 1 > (a /= d / 2) ?
b / 2 * a * a * a * a * a + c : b / 2 * ((a -= 2) * a * a * a * a + 2) + c
},
easeInSine: function(a, c, b, d) {
return -b * Math.cos(a / d * (Math.PI / 2)) + b + c
},
easeOutSine: function(a, c, b, d) {
return b * Math.sin(a / d * (Math.PI / 2)) + c
},
easeInOutSine: function(a, c, b, d) {
return -b / 2 * (Math.cos(Math.PI * a / d) - 1) + c
},
easeInExpo: function(a, c, b, d) {
return 0 == a ? c : b * Math.pow(2, 10 * (a / d - 1)) + c
},
easeOutExpo: function(a, c, b, d) {
return a == d ? c + b : b * (-Math.pow(2, -10 * a / d) + 1) + c
},
easeInOutExpo: function(a, c, b, d) {
return 0 == a ? c : a == d ? c + b : 1 > (a /= d / 2) ? b / 2 * Math.pow(2, 10 * (a - 1)) + c : b / 2 * (-Math.pow(2, -10 * --a) + 2) + c
},
easeInCirc: function(a, c, b, d) {
return -b * (Math.sqrt(1 - (a /= d) * a) - 1) + c
},
easeOutCirc: function(a, c, b, d) {
return b * Math.sqrt(1 - (a = a / d - 1) * a) + c
},
easeInOutCirc: function(a, c, b, d) {
return 1 > (a /= d / 2) ? -b / 2 * (Math.sqrt(1 - a * a) - 1) + c : b / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + c
},
easeInElastic: function(a, c, b, d) {
var f = 1.70158,
e = 0,
g = b;
if (0 == a) return c;
if (1 == (a /= d)) return c + b;
e || (e = .3 * d);
g < Math.abs(b) ? (g = b, f = e / 4) : f = e / (2 * Math.PI) * Math.asin(b / g);
return -(g * Math.pow(2, 10 * --a) * Math.sin(2 * (a * d - f) * Math.PI / e)) + c
},
easeOutElastic: function(a,
c, b, d) {
var f = 1.70158,
e = 0,
g = b;
if (0 == a) return c;
if (1 == (a /= d)) return c + b;
e || (e = .3 * d);
g < Math.abs(b) ? (g = b, f = e / 4) : f = e / (2 * Math.PI) * Math.asin(b / g);
return g * Math.pow(2, -10 * a) * Math.sin(2 * (a * d - f) * Math.PI / e) + b + c
},
easeInOutElastic: function(a, c, b, d) {
var f = 1.70158,
e = 0,
g = b;
if (0 == a) return c;
if (2 == (a /= d / 2)) return c + b;
e || (e = .3 * d * 1.5);
g < Math.abs(b) ? (g = b, f = e / 4) : f = e / (2 * Math.PI) * Math.asin(b / g);
return 1 > a ? -.5 * g * Math.pow(2, 10 * --a) * Math.sin(2 * (a * d - f) * Math.PI / e) + c : g * Math.pow(2, -10 * --a) * Math.sin(2 * (a * d - f) * Math.PI / e) * .5 + b + c
},
easeInBack: function(a, c, b, d, f) {
void 0 == f && (f = 1.70158);
return b * (a /= d) * a * ((f + 1) * a - f) + c
},
easeOutBack: function(a, c, b, d, f) {
void 0 == f && (f = 1.70158);
return b * ((a = a / d - 1) * a * ((f + 1) * a + f) + 1) + c
},
easeInOutBack: function(a, c, b, d, f) {
void 0 == f && (f = 1.70158);
return 1 > (a /= d / 2) ? b / 2 * a * a * (((f *= 1.525) + 1) * a - f) + c : b / 2 * ((a -= 2) * a * (((f *= 1.525) + 1) * a + f) + 2) + c
},
easeInBounce: function(a, c, b, d) {
return b - n.easeOutBounce(d - a, 0, b, d) + c
},
easeOutBounce: function(a, c, b, d) {
return (a /= d) < 1 / 2.75 ? 7.5625 * b * a * a + c : a < 2 / 2.75 ? b * (7.5625 * (a -= 1.5 / 2.75) * a +
.75) + c : a < 2.5 / 2.75 ? b * (7.5625 * (a -= 2.25 / 2.75) * a + .9375) + c : b * (7.5625 * (a -= 2.625 / 2.75) * a + .984375) + c
},
easeInOutBounce: function(a, c, b, d) {
return a < d / 2 ? .5 * n.easeInBounce(2 * a, 0, b, d) + c : .5 * n.easeOutBounce(2 * a - d, 0, b, d) + .5 * b + c
}
}
})(jQuery);
si quelqu'un peut m'aider SVP ?
cordialement,