An event object has target properties that points to elements related to the event.
event.target returns the object to which event is dispatched (its target). Ref.
This is:
currentTarget returns the object whose event listener’s callback is currently being invoked. Ref
This is:
The related target gets the elements that has focus when the event occurs.
You will get it for instance in a blur event.
You have an implicit dispatch when your event propagate (ie bubble).
Demo:
<div>
<button>Click me</button>
</div>
function printNodeNameCallback(e) {
console.log('-------------------');
console.log("Target: "+e.target.nodeName.toLowerCase());
console.log("Current Target: "+e.currentTarget.nodeName.toLowerCase());
}
document.querySelector("div").addEventListener("click", printNodeNameCallback);
document.querySelector("button").addEventListener("click", printNodeNameCallback);
<p>Hello <span id="world">world</span>!</p>
function getNodeId(node){
let nodeId = node.nodeName;
if ("id" in node){
nodeId += "#"+node.id;
}
return nodeId.toLowerCase();
}
function eventCallback(e) {
console.log('-------------------');
console.log("Target: "+getNodeId(e.target));
console.log("Current Target: "+getNodeId(e.currentTarget));
console.log("Event Phase: "+e.eventPhase);
}
let eventName = "myEvent";
document.addEventListener(eventName , eventCallback, {capture: true})
document.body.addEventListener(eventName , eventCallback)
var myEvent = new Event(eventName, {bubbles:true})
document.getElementById("world").dispatchEvent(myEvent)