캔버스 테스트가 간단하고 파이어 폭스에서 작동하지 않습니다. JS 콘솔에서 실제로 오류가 발생하지 않습니다. 버전은 17.0.4이며 나중에 새 버전을 시도합니다. 여기에 코드입니다 : 잘 작동 MSIE에서캔버스에 파이어 폭스로 선을 그릴 수 없습니다.
<!DOCTYPE HTML>
<HTML>
<HEAD>
<SCRIPT>
var paint = false;
var canvas;
var cntxt;
var top;
var left;
function initialise() {
canvas = document.getElementById("canvas_1");
canvas.addEventListener("mousedown", doMouseDown, false);
canvas.addEventListener("mouseup", doMouseUp, false);
canvas.addEventListener("mousemove", doMouseMove, false);
cntxt = canvas.getContext("2d");
cntxt.strokeStyle = '#ff0000';
cntxt.lineWidth = 5;
cntxt.lineCap = 'round';
rect = canvas.getBoundingClientRect();
top = rect.top;
left = rect.left;
}
function doMouseDown(event) {
paint = true;
x = event.layerX;
y = event.layerY;
document.getElementById("value_x").innerHTML = x;
document.getElementById("value_y").innerHTML = y;
cntxt.moveTo(x-left, y-top);
cntxt.beginPath();
cntxt.stroke();
}
function doMouseUp(event) {
paint = false;
x = event.layerX;
y = event.layerY;
document.getElementById("value_x").innerHTML = x;
document.getElementById("value_y").innerHTML = y;
cntxt.lineTo(x-left+1, y-top+1);
cntxt.stroke();
cntxt.closePath();
}
function doMouseMove(event) {
if(paint) {
x = event.layerX;
y = event.layerY;
document.getElementById("value_x").innerHTML = x;
document.getElementById("value_y").innerHTML = y;
cntxt.lineTo(x-left, y-top);
cntxt.stroke();
}
}
</SCRIPT>
</HEAD>
<BODY onLoad="initialise()">
<canvas width="400" height="400" id="canvas_1">
Canvas Tag not supported
</canvas>
<br>
Value x: <span id="value_x"></span>
<br>
Value y: <span id="value_y"></span>
</BODY>
</HTML>
(버전 9)하지만 파이어 폭스 스팬 요소에 제대로 좌표를 표시하지만 선이 그려지지 않습니다 ... 나는 layerX 및 layerY를 사용하여이 있어야한다고 생각
당신과 관련
http://jsfiddle.net/pyHYG/에서 나를 위해 잘 작동하는 것 같다. 모든 변수/이벤트를 로그하여 모든 변수/이벤트가 예상대로 표시되는지 확인하십시오. –
글쎄, 그 방법으로 문제를 찾을 수있었습니다 ... 상단 및 왼쪽 변수가 어떻게 든 다른 객체에 매핑되므로 topMargin leftMargin 그리고 지금은 잘 작동하고 있습니다 ... 팁 주셔서 감사합니다 ... – Martin
그 이유는 당신이 전역을 사용해서는 안됩니다 ...;) –