<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Common Feature Tests</title>
	<atom:link href="http://ajaxian.com/archives/common-feature-tests/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com/archives/common-feature-tests</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Thu, 09 Feb 2012 06:55:33 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
	<item>
		<title>By: icoloma</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269875</link>
		<dc:creator>icoloma</dc:creator>
		<pubDate>Mon, 15 Dec 2008 19:42:05 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269875</guid>
		<description>Not trying to  keep the thread on-topic, but has anyone else noticed that this is the ultimate documentation about what-is-broken-in-your-browser? A working javascript testsuite telling what works and what not, that can be used at any time?

On the performance front, you could always downgrade to browser sniffing again for really expensive operations like the Safari 2 bug mentioned here (keep the features API, but use browser sniffing inside if it&#039;s killing for performance).</description>
		<content:encoded><![CDATA[<p>Not trying to  keep the thread on-topic, but has anyone else noticed that this is the ultimate documentation about what-is-broken-in-your-browser? A working javascript testsuite telling what works and what not, that can be used at any time?</p>
<p>On the performance front, you could always downgrade to browser sniffing again for really expensive operations like the Safari 2 bug mentioned here (keep the features API, but use browser sniffing inside if it&#8217;s killing for performance).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nosredna</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269848</link>
		<dc:creator>Nosredna</dc:creator>
		<pubDate>Sat, 13 Dec 2008 16:19:22 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269848</guid>
		<description>&gt;&gt;Sigh, Chrome bent to Javascript as is exists, not to some library.
.
Why do you say that? Google explicitly said they were making sure that Chrome worked with the web as it exists. That certainly includes very popular libraries used on large sites.</description>
		<content:encoded><![CDATA[<p>&gt;&gt;Sigh, Chrome bent to Javascript as is exists, not to some library.<br />
.<br />
Why do you say that? Google explicitly said they were making sure that Chrome worked with the web as it exists. That certainly includes very popular libraries used on large sites.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jadet</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269789</link>
		<dc:creator>Jadet</dc:creator>
		<pubDate>Fri, 12 Dec 2008 11:54:06 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269789</guid>
		<description>Sigh, Chrome bent to Javascript as is exists, not to some library.</description>
		<content:encoded><![CDATA[<p>Sigh, Chrome bent to Javascript as is exists, not to some library.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nosredna</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269779</link>
		<dc:creator>Nosredna</dc:creator>
		<pubDate>Thu, 11 Dec 2008 23:26:07 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269779</guid>
		<description>Changing the Prototype library to fix problems may have happened. But in order to work with web pages using older versions of the library, of course Chrome bent to the library.
.
Google was very clear about how they were doing testing to make sure they worked with the web as it exists.</description>
		<content:encoded><![CDATA[<p>Changing the Prototype library to fix problems may have happened. But in order to work with web pages using older versions of the library, of course Chrome bent to the library.<br />
.<br />
Google was very clear about how they were doing testing to make sure they worked with the web as it exists.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jadet</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269774</link>
		<dc:creator>Jadet</dc:creator>
		<pubDate>Thu, 11 Dec 2008 22:15:55 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269774</guid>
		<description>That had to do with bugs in Chrome&#039;s Javascript implementation, not with the Javascript libraries themselves, these are merely Javascript wrappers. Libraries helped finding these bugs in Chrome, I know Prototype had to change some things around to work with early Chrome bugs. So it works both ways but a browser never bends to some library.</description>
		<content:encoded><![CDATA[<p>That had to do with bugs in Chrome&#8217;s Javascript implementation, not with the Javascript libraries themselves, these are merely Javascript wrappers. Libraries helped finding these bugs in Chrome, I know Prototype had to change some things around to work with early Chrome bugs. So it works both ways but a browser never bends to some library.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nosredna</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269768</link>
		<dc:creator>Nosredna</dc:creator>
		<pubDate>Thu, 11 Dec 2008 19:18:27 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269768</guid>
		<description>Maybe I don&#039;t win. But it&#039;s clear that Chrome needed to make itself work on pages with JS libraries. The libraries were not forced to change.</description>
		<content:encoded><![CDATA[<p>Maybe I don&#8217;t win. But it&#8217;s clear that Chrome needed to make itself work on pages with JS libraries. The libraries were not forced to change.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jadet</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269749</link>
		<dc:creator>Jadet</dc:creator>
		<pubDate>Thu, 11 Dec 2008 16:37:49 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269749</guid>
		<description>@Nosredna, Chrome uses Webkit and that never needed &quot;fixing&quot;, jquery sniffs for Webkit, nobody wins.</description>
		<content:encoded><![CDATA[<p>@Nosredna, Chrome uses Webkit and that never needed &#8220;fixing&#8221;, jquery sniffs for Webkit, nobody wins.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nosredna</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269748</link>
		<dc:creator>Nosredna</dc:creator>
		<pubDate>Thu, 11 Dec 2008 15:48:18 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269748</guid>
		<description>&gt;&gt;Actually, I remember many scripts failing in Chrome once it came out : )
.
&gt;&gt;jQuery misidentifies Chrome as Safari. You lose.
.
I don&#039;t think I lose. Chrome was fixed to deal with those cases. The other option would be to fix jQuery and get every old jQuery out there upgraded.
.
So I think I win. The browser had to deal with becoming compatible.</description>
		<content:encoded><![CDATA[<p>&gt;&gt;Actually, I remember many scripts failing in Chrome once it came out : )<br />
.<br />
&gt;&gt;jQuery misidentifies Chrome as Safari. You lose.<br />
.<br />
I don&#8217;t think I lose. Chrome was fixed to deal with those cases. The other option would be to fix jQuery and get every old jQuery out there upgraded.<br />
.<br />
So I think I win. The browser had to deal with becoming compatible.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kangax</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269740</link>
		<dc:creator>kangax</dc:creator>
		<pubDate>Thu, 11 Dec 2008 13:41:04 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269740</guid>
		<description>@David
`isHostMethod` is recommended by Michaux in one of his articles (which I linked to from the blog post). He mentions you in acknowledgment section but there&#039;s no mention of `isHostMethod` belonging to your &quot;My Library&quot;. I will certainly put the credit if that&#039;s where it originates from.

`isHostMethod` is currently not used in any tests and I&#039;m aware of consequences for not doing so. This is something I&#039;m planning to change in a near future (although you will probably argue that it should have been built upon from the beginning). If there are any other stupid mistakes on my part, please do tell; I&#039;m certainly far from an expert.</description>
		<content:encoded><![CDATA[<p>@David<br />
`isHostMethod` is recommended by Michaux in one of his articles (which I linked to from the blog post). He mentions you in acknowledgment section but there&#8217;s no mention of `isHostMethod` belonging to your &#8220;My Library&#8221;. I will certainly put the credit if that&#8217;s where it originates from.</p>
<p>`isHostMethod` is currently not used in any tests and I&#8217;m aware of consequences for not doing so. This is something I&#8217;m planning to change in a near future (although you will probably argue that it should have been built upon from the beginning). If there are any other stupid mistakes on my part, please do tell; I&#8217;m certainly far from an expert.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jadet</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269739</link>
		<dc:creator>Jadet</dc:creator>
		<pubDate>Thu, 11 Dec 2008 13:31:36 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269739</guid>
		<description>&lt;blockquote&gt;jQuery misidentifies Chrome as Safari. You lose.&lt;/blockquote&gt;

It detects Webkit, not Safari. Chrome runs on Webkit like Safari.

Seems like you haven&#039;t looked at Prototype at all because you are to fed up with something else and don&#039;t know what good code is when you see it. No reason for offtopic flaming of some framework with no arguments at all.</description>
		<content:encoded><![CDATA[<blockquote><p>jQuery misidentifies Chrome as Safari. You lose.</p></blockquote>
<p>It detects Webkit, not Safari. Chrome runs on Webkit like Safari.</p>
<p>Seems like you haven&#8217;t looked at Prototype at all because you are to fed up with something else and don&#8217;t know what good code is when you see it. No reason for offtopic flaming of some framework with no arguments at all.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: DavidMark</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269738</link>
		<dc:creator>DavidMark</dc:creator>
		<pubDate>Thu, 11 Dec 2008 12:52:20 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269738</guid>
		<description>Somebody wrote:

&quot;It seems to me that the popularity of the libraries themselves have already guaranteed that browser sniffing will work.&quot;

What sort of ridiculous statement is that?

Then they wrote this:

&quot;Take Chrome. It worked pretty well right out of the gate because they tested it against a myriad of web sites. Who is going to release a browser that crashes on jQuery sites, for example?&quot;

jQuery misidentifies Chrome as Safari.  You lose.

And browser developers do not bend to browser sniffers.  They break them (often intentionally.)</description>
		<content:encoded><![CDATA[<p>Somebody wrote:</p>
<p>&#8220;It seems to me that the popularity of the libraries themselves have already guaranteed that browser sniffing will work.&#8221;</p>
<p>What sort of ridiculous statement is that?</p>
<p>Then they wrote this:</p>
<p>&#8220;Take Chrome. It worked pretty well right out of the gate because they tested it against a myriad of web sites. Who is going to release a browser that crashes on jQuery sites, for example?&#8221;</p>
<p>jQuery misidentifies Chrome as Safari.  You lose.</p>
<p>And browser developers do not bend to browser sniffers.  They break them (often intentionally.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: DavidMark</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269737</link>
		<dc:creator>DavidMark</dc:creator>
		<pubDate>Thu, 11 Dec 2008 12:41:54 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269737</guid>
		<description>This is the worst feature testing code I have ever seen.  Except for the isHostMethod function at the top, which was lifted from My Library.

http://www.cinsoft.net/mylib.html

And even if you lifted all of the feature testing, Prototype would still be a shambles.  It isn&#039;t even worth talking about.

And yes, browser sniffing can be much faster than feature testing.  LOL.  Incompetent, technically baseless and ten years behind the times, but fast.</description>
		<content:encoded><![CDATA[<p>This is the worst feature testing code I have ever seen.  Except for the isHostMethod function at the top, which was lifted from My Library.</p>
<p><a href="http://www.cinsoft.net/mylib.html" rel="nofollow">http://www.cinsoft.net/mylib.html</a></p>
<p>And even if you lifted all of the feature testing, Prototype would still be a shambles.  It isn&#8217;t even worth talking about.</p>
<p>And yes, browser sniffing can be much faster than feature testing.  LOL.  Incompetent, technically baseless and ten years behind the times, but fast.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jaffathecake</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269735</link>
		<dc:creator>jaffathecake</dc:creator>
		<pubDate>Thu, 11 Dec 2008 09:12:47 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269735</guid>
		<description>Yeah, I see that your implementation is fairly speedy, although many more tests would be needed for a large javascript library. It will be interesting to see how long it takes and how heavy it is when it covers all/most of Prototype&#039;s browser sniffing.
.
An example I always drag out is Node.contains in Safari 2, which misbehaves. You could feature detect for this by create a tree of nodes and unit test Node.contains to see if it works as expected, but that would be quite expensive.
.
And if you&#039;re unit testing that a function behaves, shouldn&#039;t you be doing that with &lt;strong&gt;all&lt;/strong&gt; DOM functions, in case a browser comes out which has a bug in a function? No, we&#039;d only test Node.contains because we know there&#039;s a problem with it in Safari.
.
But... if we&#039;re only testing it because there&#039;s a problem with it in a particular browser, why not just detect that browser (which is quicker and lighter). Obviously doing sniffing based on WebKit version covers other WebKit browsers.
.
Although I think your work so far is fantastic, and many of your constants should be used rather than resort to sniffing, it&#039;ll be interesting to see where you draw the line.
.
Jake.</description>
		<content:encoded><![CDATA[<p>Yeah, I see that your implementation is fairly speedy, although many more tests would be needed for a large javascript library. It will be interesting to see how long it takes and how heavy it is when it covers all/most of Prototype&#8217;s browser sniffing.<br />
.<br />
An example I always drag out is Node.contains in Safari 2, which misbehaves. You could feature detect for this by create a tree of nodes and unit test Node.contains to see if it works as expected, but that would be quite expensive.<br />
.<br />
And if you&#8217;re unit testing that a function behaves, shouldn&#8217;t you be doing that with <strong>all</strong> DOM functions, in case a browser comes out which has a bug in a function? No, we&#8217;d only test Node.contains because we know there&#8217;s a problem with it in Safari.<br />
.<br />
But&#8230; if we&#8217;re only testing it because there&#8217;s a problem with it in a particular browser, why not just detect that browser (which is quicker and lighter). Obviously doing sniffing based on WebKit version covers other WebKit browsers.<br />
.<br />
Although I think your work so far is fantastic, and many of your constants should be used rather than resort to sniffing, it&#8217;ll be interesting to see where you draw the line.<br />
.<br />
Jake.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kangax</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269730</link>
		<dc:creator>kangax</dc:creator>
		<pubDate>Thu, 11 Dec 2008 06:31:24 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269730</guid>
		<description>Thanks for all the positive comments.

@jaffathecake
While some of the tests involve relatively complex manipulations, their total execution time should be close to nothing. The whole suite, for example, finishes in ~16ms in FF3 and ~50ms in IE6. Even though sniffing `userAgent` string is much faster, it&#039;s not even close as reliable as a proper feature test : )

@Nosredna, @AndiSkater
Actually, I remember many scripts failing in Chrome once it came out : ) 
There should be no doubt that feature detection is simply the sanest way to design client-side scripts. It&#039;s not about any particular browser and which `userAgent` it implements. It&#039;s about doing something that makes sense (feature detection) instead of relying on baseless sniffing and getting into troubles in a long run.</description>
		<content:encoded><![CDATA[<p>Thanks for all the positive comments.</p>
<p>@jaffathecake<br />
While some of the tests involve relatively complex manipulations, their total execution time should be close to nothing. The whole suite, for example, finishes in ~16ms in FF3 and ~50ms in IE6. Even though sniffing `userAgent` string is much faster, it&#8217;s not even close as reliable as a proper feature test : )</p>
<p>@Nosredna, @AndiSkater<br />
Actually, I remember many scripts failing in Chrome once it came out : )<br />
There should be no doubt that feature detection is simply the sanest way to design client-side scripts. It&#8217;s not about any particular browser and which `userAgent` it implements. It&#8217;s about doing something that makes sense (feature detection) instead of relying on baseless sniffing and getting into troubles in a long run.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ibolmo</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269726</link>
		<dc:creator>ibolmo</dc:creator>
		<pubDate>Thu, 11 Dec 2008 03:31:51 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269726</guid>
		<description>@Nosredna, AndiSkater; not trying to plug, but to my knowledge MooTools does a pretty good in this arena (since you can exclude Browser.js module). I believe Dojo (and Ext?) has similar extensibility -- eg, that it&#039;s easy to work in Air.</description>
		<content:encoded><![CDATA[<p>@Nosredna, AndiSkater; not trying to plug, but to my knowledge MooTools does a pretty good in this arena (since you can exclude Browser.js module). I believe Dojo (and Ext?) has similar extensibility &#8212; eg, that it&#8217;s easy to work in Air.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AndiSkater</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269725</link>
		<dc:creator>AndiSkater</dc:creator>
		<pubDate>Thu, 11 Dec 2008 02:43:41 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269725</guid>
		<description>Well, most of the bugs and missing features are IE only... did anyone expect something different? Why create a series of tests, if it is enough to suspect IE to misbehave?

Like Nosredna, I would like to see JS libs without all the sniffing and feature detection for special cases like AIR or Titanium appliactions. JS libraries should be available in optimized versions for webkit or... well, webkit it most popular for being used for stand alone web based applications.</description>
		<content:encoded><![CDATA[<p>Well, most of the bugs and missing features are IE only&#8230; did anyone expect something different? Why create a series of tests, if it is enough to suspect IE to misbehave?</p>
<p>Like Nosredna, I would like to see JS libs without all the sniffing and feature detection for special cases like AIR or Titanium appliactions. JS libraries should be available in optimized versions for webkit or&#8230; well, webkit it most popular for being used for stand alone web based applications.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tahu</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269721</link>
		<dc:creator>tahu</dc:creator>
		<pubDate>Thu, 11 Dec 2008 00:04:18 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269721</guid>
		<description>Very nice work, Kangax!

But heh, the other day I had a very similar idea to make a tool for convienient manual gathering of information about what javascript code works on which browsers. Here&#039;s the rough result: http://javy-labs.com/jsCaps/</description>
		<content:encoded><![CDATA[<p>Very nice work, Kangax!</p>
<p>But heh, the other day I had a very similar idea to make a tool for convienient manual gathering of information about what javascript code works on which browsers. Here&#8217;s the rough result: <a href="http://javy-labs.com/jsCaps/" rel="nofollow">http://javy-labs.com/jsCaps/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nosredna</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269713</link>
		<dc:creator>Nosredna</dc:creator>
		<pubDate>Wed, 10 Dec 2008 17:53:52 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269713</guid>
		<description>It seems to me that the popularity of the libraries themselves have already guaranteed that browser sniffing will work.
.
Take Chrome. It worked pretty well right out of the gate because they tested it against a myriad of web sites. Who is going to release a browser that crashes on jQuery sites, for example?
.
Right now I have the opposite desire. I&#039;m writing an AIR app. I&#039;m using jQuery and I think all the checks in jQuery are silly, because I know the environment I&#039;m running in and jQuery keeps checking all these little things all the time. A stripped-down jQuery would be smaller and faster and less complicated.</description>
		<content:encoded><![CDATA[<p>It seems to me that the popularity of the libraries themselves have already guaranteed that browser sniffing will work.<br />
.<br />
Take Chrome. It worked pretty well right out of the gate because they tested it against a myriad of web sites. Who is going to release a browser that crashes on jQuery sites, for example?<br />
.<br />
Right now I have the opposite desire. I&#8217;m writing an AIR app. I&#8217;m using jQuery and I think all the checks in jQuery are silly, because I know the environment I&#8217;m running in and jQuery keeps checking all these little things all the time. A stripped-down jQuery would be smaller and faster and less complicated.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jaffathecake</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269712</link>
		<dc:creator>jaffathecake</dc:creator>
		<pubDate>Wed, 10 Dec 2008 17:17:43 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269712</guid>
		<description>Pretty cool. Although you have to be careful of how long these kind of tests take to run, especially when they involve regex, adding / removing events, eval etc etc.

As the list of tests grows, the browser sniffing becomes the faster option.

Jake.</description>
		<content:encoded><![CDATA[<p>Pretty cool. Although you have to be careful of how long these kind of tests take to run, especially when they involve regex, adding / removing events, eval etc etc.</p>
<p>As the list of tests grows, the browser sniffing becomes the faster option.</p>
<p>Jake.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: staaky</title>
		<link>http://ajaxian.com/archives/common-feature-tests/comment-page-1#comment-269707</link>
		<dc:creator>staaky</dc:creator>
		<pubDate>Wed, 10 Dec 2008 14:33:18 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5343#comment-269707</guid>
		<description>Neat stuff kangax. It&#039;ll be very useful once this makes it&#039;s way into Prototype.

@lovejs: a browser isn&#039;t a feature, a good set of feature tests could help to avoid browser sniffing/detection altogether.</description>
		<content:encoded><![CDATA[<p>Neat stuff kangax. It&#8217;ll be very useful once this makes it&#8217;s way into Prototype.</p>
<p>@lovejs: a browser isn&#8217;t a feature, a good set of feature tests could help to avoid browser sniffing/detection altogether.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

