Cursor position fix for IE
Reported by Daniel Steigerwald | August 19th, 2008 @ 05:26 PM | in 1.2.3
http://ajaxian.com/archives/java...
Fix for mootools event.
var Event = new Native({
name: 'Event',
initialize: function(event, win){
win = win || window;
var doc = win.document;
event = event || win.event;
if (event.$extended) return event;
this.$extended = true;
var type = event.type;
var target = event.target || event.srcElement;
while (target && target.nodeType == 3) target = target.parentNode;
if (type.test(/key/)){
var code = event.which || event.keyCode;
var key = Event.Keys.keyOf(code);
if (type == 'keydown'){
var fKey = code - 111;
if (fKey > 0 && fKey < 13) key = 'f' + fKey;
}
key = key || String.fromCharCode(code).toLowerCase();
} else if (type.match(/(click|mouse|menu)/i)){
var standardMode = !doc.compatMode || doc.compatMode == 'CSS1Compat';
doc = standardMode ? doc.html : doc.body;
var page = {
x: event.pageX || event.clientX + doc.scrollLeft,
y: event.pageY || event.clientY + doc.scrollTop
};
var client = {
x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,
y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY
};
// fix ie 2px bug
if (Browser.Engine.trident && standardMode) {
var cl = doc.clientLeft, ct = doc.clientTop;
page.x -= cl;
page.y -= ct;
client.x -= cl;
client.y -= ct;
}
if (type.match(/DOMMouseScroll|mousewheel/)){
var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
}
var rightClick = (event.which == 3) || (event.button == 2);
var related = null;
if (type.match(/over|out/)){
switch (type){
case 'mouseover': related = event.relatedTarget || event.fromElement; break;
case 'mouseout': related = event.relatedTarget || event.toElement;
}
if (!(function(){
while (related && related.nodeType == 3) related = related.parentNode;
return true;
}).create({attempt: Browser.Engine.gecko})()) related = false;
}
}
return $extend(this, {
event: event,
type: type,
page: page,
client: client,
rightClick: rightClick,
wheel: wheel,
relatedTarget: related,
target: target,
code: code,
key: key,
shift: event.shiftKey,
control: event.ctrlKey,
alt: event.altKey,
meta: event.metaKey
});
}
Comments and changes to this ticket
-
digitarald August 19th, 2008 @ 05:53 PM
Thanks for contributing.
Can you submit a patch (how-to: http://github.com/mootools/mooto... so various people can test and confirm your changes?
-
-
Daniel Steigerwald August 19th, 2008 @ 10:19 PM
Testcase :) In IE, without fix you will see spark line two pixels out.
document.addEvent('mousemove', function(e) { new Element('div', { style: 'position: absolute; width: 1px; height: 1px; overflow: hidden; background-color: blue', styles: { left: e.page.x, top: e.page.y } }).inject(document.body); }); -
Tom Occhino October 3rd, 2008 @ 05:54 AM
- → Tag changed from core defect ie patch to defect ie
- → Milestone changed from 1.3.0 to 1.2.3
- → State changed from new to open
please don't use the patch tag unless you actually include a patch... :P this is more of a 'block-o-code'.
-
Daniel Steigerwald October 13th, 2008 @ 04:38 PM
I suggest fix this in 1.2.1, it's really easy to prove and fix.
Please Login or create a free account to add a new comment.
You can update this ticket by sending an email to from your email client. (help)
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
