I just came up with something pretty sneaky for a new script I’m working on. If you need to take over all the click event handling from an element, stopping all other scripts from recieving them, how about this hack!
var tempCopy = new Element(‘div’) // an event container
var controlFreakEventHandler = function () {
// your special code here
}
var putThingsBack = function() {
targetElement.removeEvents();
targetElement.cloneEvents(tempCopy, ‘click’);
}
var setupControlFreak = function() {
tempCopy.removeEvents();
tempCopy.cloneEvents(targetElement, ‘click’);
targetElement.removeEvents();
targetElement.addEvent(‘click’, controlFreakEventHandler);
}
targetElement.addEvent(‘mouseenter’, function() {
setupControlFreak();
});
var fireOldClickEvents = function(eventObj) {
putThingsBack();
targetElement.fireEvent(‘click’, eventObj);
setupControlFreak();
}