16

I want to trigger a ommousedown event on a empty td tag using java script but not using jquery. Any suggestions please

Chris
  • 57,622
  • 19
  • 111
  • 137
vinod kumar
  • 338
  • 2
  • 3
  • 9
  • 1
    Have you tried anything yet..? – Nicklas Pouey-Winger Dec 13 '13 at 13:35
  • This question is a generic version of your specific one: http://stackoverflow.com/questions/2490825/how-to-trigger-event-in-javascript – jasonlfunk Dec 13 '13 at 13:36
  • function simulateClick(){ var event = new MouseEvent('onmousedown', { 'view': window, 'bubbles': true, 'cancelable': true }); var cb = document.getElementById('x'); cb.dispatchEvent(event); } This is the code i have tried result is uncaught exception: [Exception... "Cannot convert WrappedNative to function" nsresult: "0x8057000d (NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN)" – vinod kumar Dec 18 '13 at 06:35

3 Answers3

26

I threw together a CodePen demo for you:

http://codepen.io/anon/pen/lrAxp

var element = document.getElementById('testButton');
if(document.createEvent)
{
  element.dispatchEvent(new Event('mousedown'));
}
else{
  // Internet Explorer (I think)
 element.fireEvent("onmousedown", event); 
}

You can also check out this SO post for more info: How to trigger event in JavaScript?

Community
  • 1
  • 1
JessieArr
  • 767
  • 6
  • 11
  • is it possible on a empty td tag with id dummy ? – vinod kumar Dec 18 '13 at 07:37
  • 5
    I had problems with dispatching `new Event("mousedown")`. It wasn't being caught in my event handler. But if I dispatched `new MouseEvent("mousedown")` then it worked. – ccallendar Aug 08 '19 at 16:10
  • mousedown is undefined regardless of whether you use Event or MouseEvent. I don't know if it was simply removed from javascript but it now will break anything you try to use it in e.g. canvasElem.dispatchEvent(new Event('mousedown', {pageX: 264, pageY: 267})) – David Bandel Jan 28 '22 at 18:04
  • It doesn't work for me (Chrome v.106), but the accepted solution from this thread worked: https://stackoverflow.com/questions/24025165/simulating-a-mousedown-click-mouseup-sequence-in-tampermonkey – van_folmert Oct 23 '22 at 12:17
3

This dispatches mousedown event on every empty td cell (on modern browsers):

var emptyTableCells = document.querySelectorAll("td:empty");
var mousedown = new Event('mousedown');
[].forEach.call(emptyTableCells, function(elem) {
   elem.dispatchEvent(mousedown);
});
Samuli Hakoniemi
  • 18,740
  • 1
  • 61
  • 74
-5

If you just want something simple you can also use the HTMLElement's click function:

var td = document.getElementsByTagName('td')[0];

td.onclick = function(){
    alert('!');
}

td.click();

Here's a fiddle that shows it in action: jsFiddle

tylerargo
  • 1,000
  • 10
  • 13