Javascript MouseListener和HTML5画布对象
我一直在看教程,但我似乎不知道哪里出了问题。这看起来应该很直截了当,但却给我带来了问题。下面是一些为画布对象创建鼠标侦听器的简单代码。当前单击画布时未调用函数clickReporter。为什么不呢 HTML5Javascript MouseListener和HTML5画布对象,javascript,html,html5-canvas,dom-events,Javascript,Html,Html5 Canvas,Dom Events,我一直在看教程,但我似乎不知道哪里出了问题。这看起来应该很直截了当,但却给我带来了问题。下面是一些为画布对象创建鼠标侦听器的简单代码。当前单击画布时未调用函数clickReporter。为什么不呢 HTML5 您应该使用“单击”而不是“onclick”。“on”仅在将其设置为属性时使用(例如,canvas.onclick=clickReporter) 更新 有关单击与onclick的更多详细信息 有三种方法可以将事件侦听器附加到JavaScript中的对象: 通过element.addEvent
您应该使用“单击”而不是“onclick”。“on”仅在将其设置为属性时使用(例如,canvas.onclick=clickReporter) 更新 有关单击与onclick的更多详细信息 有三种方法可以将事件侦听器附加到JavaScript中的对象:
canvas.addEventListener('click', clickReporter, false);
canvas.addEventListener('click', otherClickReporter, false);
// Both clickReporter and otherClickReporter will be called on a click event.
canvas.onclick = clickReporter;
canvas.onclick = otherClickReporter;
// Only otherClickReporter will be called on a click event.
<canvas onclick="clickReporter()"></canvas>
假设clickReporter已附加到窗口对象,则这与以下内容相同
<canvas></canvas>
<script>
canvasWeJustCreated.onclick = function() {clickReporter();}
</script>
canvasWeJustCreated.onclick=function(){clickReporter();}
可以说,你这样做是最好的方式。当然,在某些情况下,您需要使用其他方法,例如在服务器上生成页面或尝试暂时禁止在iPhone上滚动,但对于大多数应用程序,addEventListener是最佳选择。Wow。谢谢,我使用了w3schools.com上的一个示例,一定是看错了示例代码。如果你不介意的话,你能解释一下你所说的“onclick”是什么意思吗?仅仅是一个属性的实际操作不是一回事,为什么不同?我在上面添加了不同方法的比较。至于addEventListener为什么不使用“on”,这是一个严格的惯例。再次感谢您,这是非常有用的信息。我现在正试图学习java脚本,我的背景是java和C,所以要掌握它有点麻烦。嗯,IE的事件模型中只有一个事件会被调用。我记得,jQuery可以为所有浏览器处理多个浏览器。此外,您可以使用事件冒泡的功能并将其附加到父级或任何其他组件。因此,您不需要设置ID来拥有事件处理程序。因此,在我的示例中,可以使用$('#canvasZone').on('click potato','canvas',function(event){$(this.css('color','red');});这基本上会将事件处理程序附加到#canvasZone,但在单击canvas元素时,或者如果您使用$('body')。trigger('potato'),则会触发处理程序@renoirb旧IE(5,6,不记得了)确实不支持多事件绑定,但最近的IE通过
attachEvent
实现了多事件绑定,而当前IE通过标准实现了多事件绑定。但是,这个问题没有意义,因为每个支持
的浏览器都支持addEventListener
。考虑到jQuery对画布渲染没有任何好处,引入它是一种昂贵的依赖。
canvas.onclick = clickReporter;
canvas.onclick = otherClickReporter;
// Only otherClickReporter will be called on a click event.
<canvas onclick="clickReporter()"></canvas>
<canvas></canvas>
<script>
canvasWeJustCreated.onclick = function() {clickReporter();}
</script>