Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p><strong>Add/Remove/Fire Events/Custom Events in Javascript without any frameworks:</strong><br></p> <pre><code>var htmlEvents = {// list of real events //&lt;body&gt; and &lt;frameset&gt; Events onload:1, onunload:1, //Form Events onblur:1, onchange:1, onfocus:1, onreset:1, onselect:1, onsubmit:1, //Image Events onabort:1, //Keyboard Events onkeydown:1, onkeypress:1, onkeyup:1, //Mouse Events onclick:1, ondblclick:1, onmousedown:1, onmousemove:1, onmouseout:1, onmouseover:1, onmouseup:1 } function triggerEvent(el,eventName){ var event; if (typeof window.CustomEvent === 'function') { event = new CustomEvent(eventName); } else if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent(eventName,true,true); }else if(document.createEventObject){// IE &lt; 9 event = document.createEventObject(); event.eventType = eventName; } event.eventName = eventName; if(el.dispatchEvent){ el.dispatchEvent(event); }else if(el.fireEvent &amp;&amp; htmlEvents['on'+eventName]){// IE &lt; 9 el.fireEvent('on'+event.eventType,event);// can trigger only a real event (e.g. 'click') }else if(el[eventName]){ el[eventName](); }else if(el['on'+eventName]){ el['on'+eventName](); } } function addEvent(el,type,handler){ if(el.addEventListener){ el.addEventListener(type,handler,false); }else if(el.attachEvent &amp;&amp; htmlEvents['on'+type]){// IE &lt; 9 el.attachEvent('on'+type,handler); }else{ el['on'+type]=handler; } } function removeEvent(el,type,handler){ if(el.removeEventListener){ el.removeEventListener(type,handler,false); }else if(el.detachEvent &amp;&amp; htmlEvents['on'+type]){// IE &lt; 9 el.detachEvent('on'+type,handler); }else{ el['on'+type]=null; } } var _body = document.body; var customEventFunction = function(){ console.log('triggered custom event'); } // Subscribe addEvent(_body,'customEvent',customEventFunction); // Trigger triggerEvent(_body,'customEvent'); </code></pre> <p><a href="http://jsfiddle.net/ad4yG/" rel="nofollow noreferrer">Live demo</a></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload