Reputation: 1
I want to trap a ctrl-click event within a click event.
el.addEventListener('click', function (e) {
console.log("event="+e.detail.name);
console.log("eventobject="+e);
..blah blah
}
I get these results "event=undefined" and "eventobject=[object CustomEvent]", respectively. Can't figure out what i I'm doing wrong.
Upvotes: 0
Views: 613
Reputation: 14655
aframe click
event varies from the one you'll get typically from a browser.
Since there is no ctrlKey
in aframe clicks (its a VR framework after all), you can remember whether ctrl is pressed, and use that information when you get a mouseclick:
AFRAME.registerComponent('foo', {
init: function() {
// variable keeping the ctrl button state
this.ctrlIsDown = false
// bind the function recognizing whether ctrl is pressed
this.ctrlHandler = AFRAME.utils.bind(this.ctrlHandler, this)
document.body.addEventListener('keydown', this.ctrlHandler)
document.body.addEventListener('keyup', this.ctrlHandler)
// If ctrl is down when a click occured - log it
this.el.addEventListener('click', (e) => {
if (this.ctrlIsDown) {
console.log("ctr key was pressed during the click");
}
})
},
// save the state of the ctrl button
ctrlHandler: function(e) {
// change the variable only if the state differs
if (!this.ctrlIsDown && e.ctrlKey) {
this.ctrlIsDown = true
} else if (this.ctrlIsDown && !e.ctrlKey) {
this.ctrlIsDown = false
}
}
})
Check it out here.
Upvotes: 1