画布上的JavaScript事件在手机上
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了画布上的JavaScript事件在手机上相关的知识,希望对你有一定的参考价值。
我实际上是触发了所有这些事件,但它们似乎都无法在移动设备上正常工作。画布实际上是720x1000px,并不覆盖所有页面。
canvas.addEventListener('mousedown', alert);
canvas.addEventListener('mousemove', alert);
canvas.addEventListener('mouseup', alert);
canvas.addEventListener("touchstart", alert);
canvas.addEventListener("touchend", alert);
canvas.addEventListener("touchmove", alert);
canvas.addEventListener("pointerup", alert);
canvas.addEventListener("pointerdown", alert);
canvas.addEventListener("pointermove", alert);
是由事件侦听器还是画布引起的问题?我该如何解决?
答案
仅在移动设备上?
从桌面检查时,事件侦听器出了一个问题,当您运行它并触发任何事件时,它会引发此错误:
TypeError: 'alert' called on an object that does not implement interface Window.
问题是,您的alert
是什么?
- 如果是您定义的自定义函数,并调用了
alert()
,则最好更改名称,因为它已经存在,它是Window interface的方法。 - 如果是alert(),则不是对函数,您需要将reference作为回调传递给函数。如果要调用它,则需要将其包装在将作为回调传递的函数引用(匿名或命名的引用)中。
在事件监听器中设置回调的不同方法
通过匿名函数:
canvas.addEventListener('mousemove', function(){ alert('This is an alert'); });
const canvas = document.getElementById('canvas');
canvas.addEventListener('mousemove', function(){
alert('This is an alert');
});
#canvas{
background-color: green;
}
<canvas id="canvas" width="100" height="100"></canvas>
以上是关于画布上的JavaScript事件在手机上的主要内容,如果未能解决你的问题,请参考以下文章