我的捕捉只适用于Firefox,任何合法代码?

时间:2011-08-16 17:33:39

标签: javascript cross-browser

我正在学习JS(想想我不是太老了)和编写应用程序来绘制电子设备:http://3lectronics.com/draw/Atarado-Draw1.html

我能得到的最有力的帮助就在这里,因为许多伟大的人分享知识。我把20x20px对齐的原因叠加到了网格上,因为我发现了一些hacky(显然)的方法来进行捕捉。它只适用于Firefox和Seamonkey ......代码:

function ev_canvas (ev) {
if (ev.layerX || ev.layerX == 0) { // Firefox
  x2 = (ev.layerX /2).toFixed(-1) *2 ;
  y2 = (ev.layerY /2).toFixed(-1) *2 ;
} else if (ev.offsetX || ev.offsetX == 0) { // Opera
  x2 = ev.offsetX;
  y2 = ev.offsetY;
}

效果很好(你可以尝试),但其他浏览器不服从运行它。我发现Chrome不喜欢.toFixed()中的负值,如果没有它,它可以工作,但我没有捕捉...... 任何想法.... Thanx。

1 个答案:

答案 0 :(得分:2)

toFixed仅在Chrome中支持0到20之间

绕到10位的另一种方法是除以10,舍入,然后乘以10。

var x2 = Math.round(ev.layerX /20) *20 ;

不确定您发生的*2 /2是什么,但我将其留在那里。