Skip to content Skip to sidebar Skip to footer

How To Simulate A Hold Click On A Button Class

How can i simulate a hold click down onto a button? where i can use elements.[0].click(); to simulate a click, how can I make it so that it would hold down the button for e.g 5 sec

Solution 1:

You can create events and of cause also MouseEvents yourself.

In modern browsers you can just do this by calling the constructor of the needed event type, ore by calling document.createEvent('<EventName>')https://developer.mozilla.org/en-US/docs/Web/API/Event

You can then trigger this event on any element you like using dispatchEvent()https://developer.mozilla.org/de/docs/Web/API/EventTarget/dispatchEvent

document.getElementById("button").onmousedown = function() {mouseDown()};
document.getElementById("button").onmouseup = function() {mouseUp()};

functionmouseDown() {
  document.getElementById("button").innerHTML = "The mouse button is held down.";
}

functionmouseUp() {
  document.getElementById("button").innerHTML = "You released the mouse button.";
}


// bind click event on simulate buttondocument.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/functionsimulateMouseEvent(el, event){
  if (window.MouseEvent && typeofwindow.MouseEvent === 'function') {
    var event = newMouseEvent(event);
  } else {
    var event = document.createEvent('MouseEvent');
    event.initMouseEvent(event);
  }

  el.dispatchEvent(event);
}
<!DOCTYPE html><html><body><p><buttonclass="button"id="button">You released the mouse button.</button></p><p><buttonclass="simulate">simulate</button></p></body></html>

Post a Comment for "How To Simulate A Hold Click On A Button Class"