diff options
Diffstat (limited to 'lib/scripts/events.js')
-rw-r--r-- | lib/scripts/events.js | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/scripts/events.js b/lib/scripts/events.js index e7526ced7..a1fcac718 100644 --- a/lib/scripts/events.js +++ b/lib/scripts/events.js @@ -35,26 +35,31 @@ function removeEvent(element, type, handler) { function handleEvent(event) { var returnValue = true; // grab the event object (IE uses a global event object) - event = event || fixEvent(window.event); + event = event || fixEvent(window.event, this); // get a reference to the hash table of event handlers var handlers = this.events[event.type]; // execute each event handler for (var i in handlers) { if (!handlers.hasOwnProperty(i)) continue; - this.$$handleEvent = handlers[i]; - if (this.$$handleEvent(event) === false) { + if (handlers[i].call(this, event) === false) { returnValue = false; } } return returnValue; }; -function fixEvent(event) { +function fixEvent(event, _this) { // add W3C standard event methods event.preventDefault = fixEvent.preventDefault; event.stopPropagation = fixEvent.stopPropagation; // fix target event.target = event.srcElement; + event.currentTarget = _this; + // fix coords + var base = (document.documentElement.scrollTop?document.documentElement:document.body); + event.pageX = (typeof event.pageX !== 'undefined') ? event.pageX : event.clientX + base.scrollLeft; + event.pageY = (typeof event.pageY !== 'undefined') ? event.pageY : event.clientY + base.scrollTop; + return event; }; fixEvent.preventDefault = function() { @@ -103,8 +108,8 @@ window.fireoninit = function() { } // for Internet Explorer (using conditional comments) - /*@cc_on @*/ - /*@if (@_win32) + /*@cc_on + @if (@_win32) document.write("<scr" + "ipt id=\"__ie_init\" defer=\"true\" src=\"//:\"><\/script>"); var script = document.getElementById("__ie_init"); script.onreadystatechange = function() { @@ -112,7 +117,7 @@ window.fireoninit = function() { window.fireoninit(); // call the onload handler } }; - /*@end @*/ + @end @*/ // for Safari if (/WebKit/i.test(navigator.userAgent)) { // sniff @@ -172,5 +177,5 @@ function bind (fnc) { var args = Array.prototype.slice.call(arguments, 1); return function() { return fnc.apply(this, args); - } + }; } |