summaryrefslogtreecommitdiff
path: root/lib/scripts/events.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/scripts/events.js')
-rw-r--r--lib/scripts/events.js21
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);
- }
+ };
}