#javascript #jquery
#javascript #jquery
Вопрос:
Как я могу имитировать удержание нажатия на кнопку? где я могу использовать elements.[0].click();
для имитации щелчка, как я могу сделать так, чтобы он удерживал кнопку, например, 5 секунд, а не просто отпускал ее?
пример кода
<!DOCTYPE html>
<html>
<body>
<button class="button" id="button">You released the mouse button.</p>
<script>
document.getElementById("button").onmousedown = function() {mouseDown()};
document.getElementById("button").onmouseup = function() {mouseUp()};
function mouseDown() {
document.getElementById("button").innerHTML = "The mouse button is held down.";
}
function mouseUp() {
document.getElementById("button").innerHTML = "You released the mouse button.";
}
</script>
</body>
</html>
Комментарии:
1. Вы можете использовать developer.mozilla.org/en-US/docs/Web/API/EventTarget /… чтобы отправить событие наведения курсора мыши, подождите 5 секунд и отправьте событие наведения курсора мыши.
2. С помощью jQuery вы, вероятно, могли бы сделать то же самое с
trigger('mousedown')
и то же самое для наведения курсора мыши3. Для этого вам не нужен jQuery. Просто посетите youmightnotneedjquery.com и искать
trigger
.
Ответ №1:
Вы можете создавать события и причины также MouseEvents
самостоятельно.
В современных браузерах вы можете просто сделать это, вызвав конструктор нужного типа события или вызвав document.createEvent('<EventName>')
https://developer.mozilla.org/en-US/docs/Web/API/Event
Затем вы можете запустить это событие для любого элемента, который вам нравится, используя dispatchEvent()
https://developer.mozilla.org/de/docs/Web/API/EventTarget/dispatchEvent
document.getElementById("button").addEventListener('mousedown', mouseDown);
document.getElementById("button").addEventListener('mouseup', mouseUp);
function mouseDown() {
document.getElementById("button").innerHTML = "The mouse button is held down.";
}
function mouseUp() {
document.getElementById("button").innerHTML = "You released the mouse button.";
}
// bind click event on simulate button
document.querySelector('.simulate').addEventListener('click', () => {
console.log('start');
simulateMouseEvent(document.getElementById("button"), 'mousedown')
setTimeout(() => {
console.log('end');
simulateMouseEvent(document.getElementById("button"), 'mouseup')
}, 5000)
})
// capsulate the event trigger stuff
// see: http://youmightnotneedjquery.com/
function simulateMouseEvent(el, eventName){
let event;
if (window.MouseEvent amp;amp; typeof window.MouseEvent === 'function') {
event = new MouseEvent(eventName);
} else {
event = document.createEvent('MouseEvent');
event.initMouseEvent(eventName);
}
el.dispatchEvent(event);
}
<!DOCTYPE html>
<html>
<body>
<p>
<button class="button" id="button">You released the mouse button.</button>
</p>
<p>
<button class="simulate">simulate</button>
</p>
</body>
</html>