Pretty much the same, dunno if this test is meaningful enough :-)
var o1 = {safari:true, version:"500"},
o2 = {safari:"500"};
for(var n, i = 0, max = 100000, time = new Date; i < max; ++i){
n = (o1["msie" + i] || o1.safari) && o1.version < 600;
n = o1.safari && true;
}
time = new Date - time;
alert(time);
for(var n, i = 0, max = 100000, time = new Date; i < max; ++i){
n = (o2["msie" + i] || o2.safari) < 600;
n = o2.safari && true;
}
time = new Date - time;
alert(time);
On Fri, Sep 19, 2008 at 9:34 AM, Andrea Giammarchi <
[EMAIL PROTECTED]> wrote:
> P.S. I forgot the 1% case ...
>
> var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417
> ? ...
>
> with my proposal:
>
> var chars = jQuery.browser.safari < 417 ? ...
>
> I am not sure about performances, is JS faster to "discover an undefined
> value" casting it as Boolean(false) plus optional check for version
> property, or it is faster to simply cast set values in a smaller object that
> contain versions ?
>
> I'll do some test :D
>
>
>
>
> On Fri, Sep 19, 2008 at 9:28 AM, Andrea Giammarchi <
> [EMAIL PROTECTED]> wrote:
>
>> Erik,
>> some trick is valid for gecko only, instead of 3 checks you can use
>> if(B.gecko)
>>
>> Some trick is for webkit only, and in most of cases you can simply check
>> B.safari instead of multiple checks.
>>
>> Some trick, dunno yet which one, could be valid only for windows or not
>> windows platforms, you can check B.nt
>>
>> And so on, the order is always important, like a switch, where mozilla
>> will be simply the default value.
>>
>> As sum, instead of multiple checks, and for 70% of times, we could simply
>> use if(B.gecko) /* safari, wekit, firefox, chrome */ else /* IE */
>> In some other case, if(B.msie) /* IE */ else /* opera, firefox, chrome,
>> safari, webkit, whatever */
>>
>> Finally, these cases cover 99% of jQuery usage of the browser object,
>> since conditions are always these:
>>
>> - if(browser.msie)
>> - if(browser.opera)
>> - if(browser.safari)
>>
>> :-)
>>
>>
>>
>> On Fri, Sep 19, 2008 at 7:22 AM, Erik Beeson <[EMAIL PROTECTED]>wrote:
>>
>>> I don't like this since it depends on checking in a particular order.
>>> B.gecko is true for safari/chrome, B.applewebkit is true for chrome,
>>> B.mozilla is true for most everything (including msie).
>>>
>>> That seems like it definitely violates the principle of least surprise to
>>> me: http://en.wikipedia.org/wiki/Principle_of_least_astonishment
>>>
>>> --Erik
>>>
>>>
>>> On Thu, Sep 18, 2008 at 4:39 AM, Andrea Giammarchi <
>>> [EMAIL PROTECTED]> wrote:
>>>
>>>> Hi guys,
>>>> I wonder if these 2 lines of code are enough to make everybody happy :D
>>>>
>>>> B = function(RegExp, browser){
>>>> while(arguments = RegExp.exec(navigator.userAgent))
>>>> browser[arguments[1].toLowerCase()] = arguments[3];
>>>> return browser;
>>>> }(/\b(\w+)\b(\/| )([0-9\.]+)/g, {});
>>>>
>>>> //* test */ for(var k in B) alert(k + " = " + B[k]);
>>>>
>>>> In this case we can check everything without maintain code.
>>>> As example:
>>>>
>>>> if(B.firefox)...
>>>> else if(B.msie)...
>>>> else if(B.chrome)...
>>>> else if(B.applewebkit)...
>>>> else if(B.safari)...
>>>> else if(B.gecko)...
>>>> else if(B.msie)...
>>>>
>>>> Plus extra information, like:
>>>>
>>>> if(B.nt)...
>>>>
>>>> So, one regexp, every possible case plus browser version as string.
>>>>
>>>> alert(B.firefox > "3.0.0" && B.firefox < "3.0.2");
>>>>
>>>> Regards
>>>>
>>>>
>>>>
>>>> On Wed, Sep 17, 2008 at 10:05 PM, Ariel Flesler <[EMAIL PROTECTED]>wrote:
>>>>
>>>>>
>>>>> We can always have a plugin (and there are already) that adds any
>>>>> amount of flags to $.browser.
>>>>> As long as we don't need to bifurcate the core's code, there's no need
>>>>> for this addition IMO.
>>>>>
>>>>> --
>>>>> Ariel Flesler
>>>>> http://flesler.blogspot.com/
>>>>>
>>>>> On Sep 17, 9:25 am, "John Resig" <[EMAIL PROTECTED]> wrote:
>>>>> > The word 'safari' is just legacy - just pretend that it's 'webkit'.
>>>>> >
>>>>> > --John
>>>>> >
>>>>> > On Wed, Sep 17, 2008 at 4:38 AM, Sam Collett <[EMAIL PROTECTED]>
>>>>> wrote:
>>>>> > > Firefox isn't even in jQuery.browser, so unlikely Chrome will be.
>>>>> If Chrome
>>>>> > > is added, Firefox should be too. Although Safari is in it instead
>>>>> of WebKit
>>>>> > > (not sure why that is, especially since the version does not match
>>>>> the
>>>>> > > browser).
>>>>> >
>>>>> > > --Sam
>>>>> >
>>>>> > > 2008/9/16 jonhobbs <[EMAIL PROTECTED]>
>>>>> >
>>>>> > >> I wish this is true but unfortunately it doesn't seem to be.
>>>>> >
>>>>> > >> <select> lists look completely different for example.
>>>>> >
>>>>> > >> Jon
>>>>> >
>>>>> > >> On Sep 4, 1:29 pm, "John Resig" <[EMAIL PROTECTED]> wrote:
>>>>> > >> > Don't see a reason to add it. Really should be treated any
>>>>> differently
>>>>> > >> > than
>>>>> > >> > any other WebKit engine is (unfortunately named 'safari' in
>>>>> .browsers).
>>>>> >
>>>>> > >> > --John
>>>>> >
>>>>> > >> > On Thu, Sep 4, 2008 at 6:59 AM, Erik Beeson <
>>>>> [EMAIL PROTECTED]>
>>>>> > >> > wrote:
>>>>> > >> > > Chrome on Vista is reporting:
>>>>> > >> > > Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US)
>>>>> AppleWebKit/525.13
>>>>> > >> > > (KHTML,
>>>>> > >> > > like Gecko) Chrome/0.2.149.27 Safari/525.13
>>>>> >
>>>>> > >> > > Will this be added to jQuery.browser?
>>>>> >
>>>>> > >> > > --Erik
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>> >>>
>>>
>>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"jQuery Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---