Только на мобильном телефоне?
При проверке с рабочего стола возникает проблема, связанная с прослушивателем событий, когда вы запускаете его и запускаете любое событие, он выдает эту ошибку:
TypeError: 'alert' called on an object that does not implement interface Window.
Вопрос в том, каков ваш alert
?
- Если это была пользовательская функция, которую вы определили и вызвали
alert()
, лучше измените имя, потому что оно уже существует, это метод интерфейса Window . - Если это означает alert () , то это не ссылка на функцию, и вам нужно передать ссылку в функцию в качестве обратного вызова. Если вы хотите вызвать его, вам нужно обернуть его в ссылку на функцию (анонимную или именованную), которую вы передадите в качестве обратного вызова.
Другой способ установить обратный вызов в прослушиватель событий
с помощью анонимной функции:
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>
По именованной функции (с анонимной функцией):
function doAlert(msg){
return function () {
alert(msg);
};
}
canvas.addEventListener('mousemove', doAlert('This is an alert'));
const canvas = document.getElementById('canvas');
function doAlert(msg){
return function () {
alert(msg);
};
}
canvas.addEventListener('mousemove', doAlert('This is an alert'));
#canvas{
background-color: green;
}
<canvas id="canvas" width="100" height="100"></canvas>
По именованной функции (с помощью метода bind () ):
function doAlert(msg){
return alert(msg);
}
canvas.addEventListener('mousemove', doAlert.bind(null, 'This is an alert'));
const canvas = document.getElementById('canvas');
function doAlert(msg){
return alert(msg);
}
canvas.addEventListener('mousemove', doAlert.bind(null, 'This is an alert'));
#canvas{
background-color: green;
}
<canvas id="canvas" width="100" height="100"></canvas>