[jQuery] Event fix in Safari - cannot work
Hi,
I just had a look at the event fix. I think it cannot work for Safari,
here's how it is now: The fix function is called if the event argument
for handle is undefined:
event = event || jQuery.event.fix( window.event );
So jQuery.event.fix is only executed if event is undefined, but this is
only the case in IE. Thus the following lines in jQuery.event.fix are
never executed in Safari:
...
} else if(jQuery.browser.safari && event.target.nodeType == 3) {
// target is readonly, clone the event object
event = jQuery.extend({}, event);
// get parentnode from textnode
event.target = event.target.parentNode;
}
Should look like this:
event = jQuery.event.fix( event );
And the fix function:
fix: function(event) {
// check IE
if(!event) {
// get real event from window.event
event = window.event;
// fix target property
event.target = event.srcElement;
// fix preventDefault and stopPropagation
event.preventDefault = function() {
this.returnValue = false;
};
event.stopPropagation = function() {
this.cancelBubble = true;
};
// check safari and if target is a textnode
} else if(jQuery.browser.safari && event.target.nodeType == 3) {
// target is readonly, clone the event object
event = jQuery.extend({}, event);
// get parentnode from textnode
event.target = event.target.parentNode;
}
return event;
}
Commit? Better idea anyone?
-- Klaus
_______________________________________________
jQuery mailing list
discuss@jquery.com
http://jquery.com/discuss/