아래 코드는 MSpaint의 연필 도구와 같은 기능을합니다. 아래 코드는 IE를 제외한 모든 브라우저에서 제대로 작동하지만, IE에서 오류를주지 않습니다. 스크립트 파일을 포함하여 캔버스를 만들었습니다. 태그를 IE에서 실행하면 IE의 프리 핸드 라인을 그리는 것이 다른 브라우저에서 작동하므로 제대로 작동하지 않습니다. 마우스를 천천히 움직이면 잠시 동안 작동하지만 마우스를 클릭하여 IE로 이동하더라도 그리기가 중단됩니다. 어떤 변화를 만들어야합니까 ??HTML5 canvas 이벤트가 IE에서 제대로 작동하지 않습니다.
-init 방법은 body 태그
var canvas;
var ctx;
var canX;
var canY;
var rltvX;
var rltvY;
var x = "black";
var flag = false;
var w, h;
function findxy(res, e)
{
if (res == 'down')
{
canX = e.clientX - canvas.offsetLeft - 10;
canY = e.clientY - canvas.offsetTop - 35;
flag = true;
dot_flag = true;
if (dot_flag)
{
ctx.beginPath();
ctx.fillStyle = x;
ctx.fillRect(canX, canY, 2, 2);
ctx.closePath();
dot_flag = false;
}
}
if (res == 'up' || res == "out")
{
flag = false;
flag = false;
}
if (res == 'move')
{
if (flag) {
rltvX = canX;
rltvY = canY;
canX = e.clientX - canvas.offsetLeft - 10;
canY = e.clientY - canvas.offsetTop - 35;
ctx.beginPath();
ctx.moveTo(rltvX, rltvY);
ctx.lineTo(canX, canY);
ctx.strokeStyle = x;
ctx.lineWidth = 2;
ctx.stroke();
ctx.closePath();
}
}
}
function init()
{
canvas = document.getElementById("canvas");
ctx = canvas.getContext("2d");
w = canvas.width;
h = canvas.height;
if (canvas.addEventListener)
{
canvas.addEventListener("mousemove", function(e) {
findxy('move', e);
}, false);
canvas.addEventListener("mousedown", function(e) {
findxy('down', e);
}, false);
canvas.addEventListener("mouseup", function(e) {
findxy('up', e);
}, false);
canvas.addEventListener("mouseout", function(e) {
findxy('out', e);
}, false);
} else {
canvas.attachEvent("onmousemove", function(e) {findxy('move', e);});
canvas.attachEvent("onmousedown", function(e) {findxy('down', e);});
canvas.attachEvent("onmouseup", function(e) {findxy('up', e);});
canvas.attachEvent("onmouseout", function(e) {findxy('out', e);});
}
}
IE 버전? – philipp
html5 캔버스는 IE9를 사용해야합니다. – judgement
@philipp 버전은 IE8 –