> Feature Detection is all about checking how a feature behaves, and if > it behaves in a known faulty way, then apply the known fix. Instead of > checking whether browsers "support" each of the standard way of doing > things, the detection should be checking for known failures that need > fixing. Knowing that a browser does not support a standard way of > doing something does _not_ logically tell you the correct way to fix > it. You need to test to see how the feature behaves to know which fix, > if any, is most appropriate.
You're still assuming that there's more than one possible fix. If we need more than one fix then we would certainly test for the applicability of each and work our way down - but as it stands there is no point in progressing that far (we already use many more browser features which would immediate exclude, or break, old browsers - such as document fragments, advanced regular expressions, etc.) There are two ways a one-fix situation can be done: if (standards_supported) use_standards_method() else apply_ie_fix() // non-ie, non-compliant, browsers are broken if (standards_supported) use_standards_method() else if ( can_do_ie_fix() ) apply_ie_fix() else // non-ie, non-compliant, browsers are broken It doesn't matter - one way or the other the broken browser is still going to be broken - the only difference is that IE is going to be slower. Feature detection is about providing fixes to bugs in a manner that will gracefully continue to work when those bugs are fixed in new browsers (or if duplicate bugs are introduced elsewhere, in an other new browser). Feature detection is all about new and unknown browsers - hoping that your code will continue to persist. You conflate it with supporting old browsers that are lacking features - which is a completely separate set of discussions. For example, right now different parts of jQuery may break in older browsers - but the library, as a whole, will continue to try and operate. It's not clear if that's desirable - if we can't guarantee that all of the library should work, should we just quietly fail instead? One idea that I've been thinking of is to make it so that the callback passed to $(document).ready(function(){}) will just not execute if we can't guarantee that all of jQuery will work. This does a couple things: 1) Users of old browsers will simply have no JavaScript run (which is fine, since users of jQuery should be doing graceful degradation anyway). 2) This limits the set of possible browsers that will ever even hit the "jQuery.support" code to those that we actually have solutions for. I'll need to collect an assortment of older browsers, first, to determine what can and should be checked for a failure state (probably check Firefox 1.5, IE 5.5, Opera 8, Safari 1, etc.). This will be good since if we can't make a check to properly exclude an older browser (since it would be missing some critical feature) then we should probably work to support it fully. But - again - this is not feature detection as it's typically defined and should not be confused with feature detection. You're worried about old browsers failing gracefully - and that's a completely different set of issues from what normal bug fix feature detection should be handling. --John --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---