Страницы: 1
Не работает следующий код в FF (последняя версия), при этом например в IE все работает нормально.
(при нажатии должна рисоваться линия в блоке canvas)
Так же при выводе например "alert("x: "+event.offsetX)" выдает "x: undefind". И это только в FF.
canvas.addEventListener("mousedown",function (event){
ctx.beginPath();
ctx.moveTo(event.offsetX, event.offsetY);
flag=0;
canvas.addEventListener('mousemove', function (event) {
if(flag==0){
ctx.lineTo(event.offsetX, event.offsetY);
ctx.stroke();
}
canvas.addEventListener('mouseup', function (event){
flag=1;
}, false);
}, false);
}, false);
}
</script>
</head>
<body onload="init()">
<canvas id="canvas" width="400" height="300">не поддерживается</canvas>
</body>
</html>
Отредактировано surranov (10-07-2014 16:47:32)
Отсутствует
Так же при выводе например "alert("x: "+event.offsetX)" выдает "x: undefind". И это только в FF.
А причем тут canvas?
offsetX/Y отсутствуют в стандарте:
http://www.w3.org/TR/DOM-Level-2-Events … MouseEvent
https://dvcs.w3.org/hg/dom3events/raw-f … ouseevents
Есть, правда, еще какой-то http://www.w3.org/TR/cssom-view/#extens … -interface
И заодно https://bugzilla.mozilla.org/show_bug.cgi?id=69787
Можно попробовать вот так:
var rc = canvas.getBoundingClientRect ? canvas.getBoundingClientRect() : { left: canvas.offsetLeft || 0, top: canvas.offsetTop || 0 };
и
ctx.moveTo(event.offsetX || event.clientX - rc.left, event.offsetY || event.clientY - rc.top);
ctx.lineTo(event.offsetX || event.clientX - rc.left, event.offsetY || event.clientY - rc.top);
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Страницы: 1