presque oublié ... je l'ai trouvé la réponse , ça marche et c'est le code final. Pour cela a fonctionné dans Internet Explorer, vous devez ajouter la bibliothèque excanvas de Google et de résoudre certains problèmes IE8 vous devez ajouter la compatibilité balise meta:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>Canvas</title>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="excanvas.js"></script>
</head>
<body>
<div class="indicator">
<img class="image" src="usage_icon_electro.png" alt="" />
<img class="pointer" src="usage_electro_pointer.png" alt="" />
<canvas width="120" height="120" id="canvas"></canvas>
</div>
<script type="text/javascript">
var indicatorClass = {
timerHandle : 0,
timerDelay : 10,
rotationIncrement : 1,
rotationStep : 0,
rotationSteps : 50,
rotationRadius : 35,
angleCurrent : 5,
angleDelta : 150,
directionClockwise : true,
canvasIndicator : null,
canvasPointer : null,
canvasContext : null,
getRadianAngle : function (degreeValue) {
return degreeValue * Math.PI/180;
},
initCanvas : function (optionList) {
try {
var canvasData = $ ('.indicator #canvas').get (0);
if ($.browser.msie) {
canvasData = document.createElement('canvas');
$ (canvasData)
.attr ('width', 120)
.attr ('height', 120)
.attr ('id', 'canvas')
.appendTo('.indicator');
canvasData = G_vmlCanvasManager.initElement(canvasData);
/*
var metaCompatible = document.createElement('meta');
$ (metaCompatible)
.attr ('http-equiv', 'X-UA-Compatible')
.attr ('content', 'IE=EmulateIE7')
.prependTo('head');
*/
//$ ('head').prepend ('<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />');
//alert ($ ('head').html());
}
indicatorClass.canvasIndicator = $ ('.indicator');
indicatorClass.canvasPointer = $ ('.indicator .pointer').get (0);
indicatorClass.canvasContext = canvasData.getContext ("2d");
$.extend (indicatorClass, optionList);
var angleMax = indicatorClass.angleCurrent + indicatorClass.angleDelta;
indicatorClass.setRotationAngle (510);
indicatorClass.timerHandle = setInterval(function() {
if (indicatorClass.angleCurrent > angleMax) {
clearInterval (indicatorClass.timerHandle);
}
indicatorClass.angleCurrent += indicatorClass.rotationIncrement;
indicatorClass.rotationStep += indicatorClass.rotationIncrement;
indicatorClass.setRotation();
}, indicatorClass.timerDelay);
} catch (exceptionData) {
alert ('Indicator is not loaded');
}
},
getCircleCoords : function (stepIndex) {
var centerX = indicatorClass.canvasIndicator.width()/2;
var centerY = indicatorClass.canvasIndicator.height()/2;
var coordValues = {
currentX : (centerX + indicatorClass.rotationRadius * Math.cos (2 * Math.PI * stepIndex/indicatorClass.rotationSteps)),
currentY : (centerY + indicatorClass.rotationRadius * Math.sin (2 * Math.PI * stepIndex/indicatorClass.rotationSteps))
}
return coordValues;
},
setRotationAngle : function (angleValue) {
indicatorClass.canvasContext.translate(indicatorClass.canvasIndicator.width()/2, indicatorClass.canvasIndicator.height()/2);
for (var currentAngle = 90; currentAngle <= 720; currentAngle++) {
var sin = Math.sin(currentAngle * Math.PI/360);
var cos = Math.cos(currentAngle * Math.PI/360);
var deltaX = indicatorClass.directionClockwise ? -sin : sin;
var deltaY = indicatorClass.directionClockwise ? sin : -sin;
if (currentAngle > angleValue) {
indicatorClass.canvasContext.transform(cos, deltaY, deltaX, cos, 0, 0);
return false;
}
}
},
setTransform : function() {
var sin = Math.sin(indicatorClass.rotationStep * Math.PI/indicatorClass.rotationSteps);
var cos = Math.cos(indicatorClass.rotationStep * Math.PI/indicatorClass.rotationSteps);
var deltaX = indicatorClass.directionClockwise ? -sin : sin;
var deltaY = indicatorClass.directionClockwise ? sin : -sin;
//indicatorClass.canvasContext.clearRect (0, 0, indicatorClass.canvasContext.canvas.width, indicatorClass.canvasContext.canvas.height);
indicatorClass.canvasContext.save();
//indicatorClass.canvasContext.translate(indicatorClass.canvasIndicator.width()/2, indicatorClass.canvasIndicator.height()/2);
indicatorClass.canvasContext.transform(cos, deltaY, deltaX, cos, 0, 0);
indicatorClass.canvasContext.clearRect (-screen.width, -screen.height, screen.width, screen.height);
indicatorClass.canvasContext.drawImage(indicatorClass.canvasPointer, -indicatorClass.canvasPointer.width/2, -indicatorClass.canvasPointer.height - indicatorClass.rotationRadius);
indicatorClass.canvasContext.restore();
},
setRotation : function() {
var currentAngle = indicatorClass.directionClockwise ? indicatorClass.angleCurrent : -indicatorClass.angleCurrent;
indicatorClass.canvasContext.save();
indicatorClass.canvasContext.rotate(indicatorClass.getRadianAngle (currentAngle));
indicatorClass.canvasContext.clearRect (-screen.width, -screen.height, screen.width, screen.height);
indicatorClass.canvasContext.drawImage(indicatorClass.canvasPointer, -indicatorClass.canvasPointer.width/2, -indicatorClass.canvasPointer.height - indicatorClass.rotationRadius);
indicatorClass.canvasContext.restore();
}
}
window.onload = function() {
indicatorClass.initCanvas();
}
</script>
<style type="text/css">
.indicator {
width:120px;
height:120px;
border:1px solid #ccc;
text-align:center;
position:relative;
}
.indicator .pointer {
visibility:hidden;
}
.indicator #canvas {
z-index:10000;
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
}
</style>
</body>
</html>
Lorsque vous postez une réponse, il est préférable d'inclure un exemple ** minimal **. Vous ne devriez pas tout inclure. – Annan