> > In this case you are fixing a bug that happens to appear in one
> > browser, but why limit the fix to only that browser? What
> > if another browser based on Safari comes out but has a
> > different user agent string and isn't recognized by jQuery?
> > Wouldn't you still want the bug to be fixed? What harm
> > would it cause to leave out the browser check?
> Why fix something that isn't broken? You can play the
> hypothetical both ways without satisfaction. What if another
> browser comes out that breaks when this fix is applied? It's
> a pragmatic solution to a problem that exists today.
In general, I agree with you. But look at the specific code again:
// check if target is a textnode (safari)
if (jQuery.browser.safari && event.target.nodeType == 3)
event.target = originalEvent.target.parentNode;
The purpose of this code is to detect when event.target is a text node and
substitute the parent node instead.
The only reason to make this specific to Safari would be if we *want* to
allow event.target to be a text node in other browsers. But we don't want
event.target to be a text node, in any browser. We'd always want to get the
parent node in such a situation, even if it happened in some unknown future
browser.
-Mike