У меня есть холст, который отображает 2 круга (конкретная диаграмма Венна).Ошибка холста в IE8
Полотно должно поддерживать IE8 так, как запасной вариант, я включил Excanvas.js и HTML5shiv, однако я получаю ошибку>
Объект не поддерживает это свойство или метод на линии по 21
строка кода, который принадлежит на линии 21 является:
var ctx = canvas.getContext("2d");
Это мой первый раз, работая с холстом, так что я довольно сл ueless о том, почему он не работает, поскольку я знаю, что есть способы заставить его работать в IE8.
Вот SOFiddle:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />
<!--[if IE]>
\t <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/r29/html5.js"></script>
\t <script src="//cdn.jsdelivr.net/excanvas/r3/excanvas.js"></script>
<![endif]-->
</head>
<body>
<canvas id="canvas" width="260" height="140"></canvas>
<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var canvas1 = document.createElement("canvas");
var ctx1 = canvas1.getContext("2d");
// Calculate the circle positions
var rawPercentage = '25%';
var percentage = rawPercentage.replace('%', '');
var calculateWhiteX = ((percentage/100) * 65) + 65;
var calculateGreyX = 196 - ((percentage/100) * 65);
var circleWhite = {
x: calculateWhiteX, // top/bottom
y: 65, // left/right
r: 64 // radius/size
};
var circleGrey = {
x: calculateGreyX, // top/bottom
y: 65, // left/right
r: 64 // radius/size
};
var grey = '#e8e9e9';
var white = '#FFFFFF';
var blue = '#1f4e80';
drawCircle(ctx, circleGrey, grey);
drawCircle(ctx, circleWhite, white);
function drawIntersect(a, b, c, notC, color) {
ctx1.clearRect(0, 0, canvas1.width, canvas1.height);
ctx1.save();
// a
drawCircle(ctx1, a, color);
// b
ctx1.globalCompositeOperation = "source-in";
drawCircle(ctx1, b, color);
// c
if (c) {
drawCircle(ctx1, c, color);
}
// notC
ctx1.globalCompositeOperation = "destination-out";
if (notC) {
drawCircle(ctx1, notC, color);
}
ctx1.restore();
ctx.drawImage(canvas1, 0, 0);
}
function drawCircle(ctx, circle, color) {
ctx.beginPath();
ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2);
ctx.closePath();
ctx.fillStyle = color;
ctx.fill();
genStroke();
}
function genStroke() {
ctx.lineWidth = 1;
ctx.strokeStyle = '#d2d2d2';
ctx.stroke();
}
function drawVenn() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
drawCircle(ctx, circleGrey, grey);
drawCircle(ctx, circleWhite, white);
drawIntersect(circleWhite, circleGrey, null, null, blue);
}
drawVenn();
</script>
</body>
</html>
Может кто-нибудь пролить некоторый свет и, возможно, мне точку в правильном направлении?
Может быть, это поможет? https://stackoverflow.com/questions/22285569/canvas-not-working-in-ie8-browsers/22293779#22293779 – K3N