Сценарий:
При просмотре веб-страниц для решения Javascript пользовательских событий, я не мог найти какие-либо практические примеры и даже ресурс MDN действительно ограничен.Как создавать, добавлять пользовательские свойства и огонь пользовательских событий в ванильным Javascript
Я пытаюсь перестроить paperjs' onMouseDrag event. Мое предназначение - для рисования в виде веб-приложения.
Пожары событий onMouseDrag когда:
- Левая кнопка мыши нажата
- Мышь движется
Цель:
Цель здесь не иметь рабочее событие onMouseDrag
. Цель состоит в том, чтобы иметь четкое описание и пример о том, как создать CustomEvent
. Событие onMouseDrag
присутствует только в качестве примера.
Требования:
- Ответ должен быть в vanilla-js или равнинных JS. (no jQuery или любая другая библиотека)
- Ответ должен использовать
new CustomEvent()
илиnew Event()
, а не устаревшие методы. - Когда mousedrag вызывается, передаваемый аргумент события должен быть тем же аргументом события, который принимает mousemove.
Код:
Я попытался следующие
var onMouseDrag = new CustomEvent('mousedrag'),
elem = document.getElementById('element'),
mousedown = false;
elem.addEventListener('mousedrag', function (event) {
// The event argument passed should be
// the same event as the event passed by any other mouse event.
// Do something while the mouse is being dragged.
});
elem.addEventListener('mousedown', function (event) {
mousedown = true;
});
elem.addEventListener('mouseup', function (event) {
mousedown = false;
});
elem.addEventListener('mousemove', function (event) {
if (mousedown) {
elem.dispatchEvent('mousedrag');
// Pass the event variable to the dispatched mousedrag.
}
});
Я до сих пор не знаю, как передать пользовательские данные во время событий отправки. (Когда событие отправки, то MouseDrag слушатель должен получить первоначальное событие) 'elem.addEventListener ('' MouseDrag, функцию (событие) { уага х = event.offsetX, у = event.offsetY; console.log (x, y); // logs undefined, undefined }); ' – Azeirah
Это связано с тем, что только события нативной мыши имеют положение указателей, вам нужно будет добавить их к событию. Дайте мне секунду, чтобы посмотреть на это? – adeneo