<?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: Detecting Browser CSS Style Support</title>
	<atom:link href="http://ryanmorr.com/archives/detecting-browser-css-style-support/feed" rel="self" type="application/rss+xml" />
	<link>http://ryanmorr.com/archives/detecting-browser-css-style-support</link>
	<description>JavaScript, CSS, and Web Apps</description>
	<lastBuildDate>Fri, 23 Mar 2012 12:56:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: john</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-6251</link>
		<dc:creator>john</dc:creator>
		<pubDate>Fri, 14 Oct 2011 20:13:45 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-6251</guid>
		<description>This is actually what I need. Thanks 

I agree modernizr is a different solution. With modernizr you cannot tell easily what browser is being used. It just tells you what is supported and what isn&#039;t but in a generic way. For example something like .box-model in modernizr means that box-model is supported, but you dont know if that means you are in Webkit or FireFox, which both implement the box model a bit differently(this is actually my problem). 

With this library isStyleSupported you can check specifically for -moz-box-orient or -webkit-box-orient this will let you know EXACTLY what browser you are and which implementation of box model you are working with. 

Of course if it is an older browsers this method won&#039;t work but im not supporting old browsers so that is ok with me.</description>
		<content:encoded><![CDATA[<p>This is actually what I need. Thanks </p>
<p>I agree modernizr is a different solution. With modernizr you cannot tell easily what browser is being used. It just tells you what is supported and what isn&#8217;t but in a generic way. For example something like .box-model in modernizr means that box-model is supported, but you dont know if that means you are in Webkit or FireFox, which both implement the box model a bit differently(this is actually my problem). </p>
<p>With this library isStyleSupported you can check specifically for -moz-box-orient or -webkit-box-orient this will let you know EXACTLY what browser you are and which implementation of box model you are working with. </p>
<p>Of course if it is an older browsers this method won&#8217;t work but im not supporting old browsers so that is ok with me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan Morr</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-631</link>
		<dc:creator>Ryan Morr</dc:creator>
		<pubDate>Wed, 27 Jan 2010 23:57:03 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-631</guid>
		<description>@Faruk Ateş

I have seen Modernizr, the important difference between it and my solution is that my solution has the ability to determine support for any styles you provide the method as opposed to Modernizr&#039;s select few. 

Also, my solution is capable of determining support for assignable style values.</description>
		<content:encoded><![CDATA[<p>@Faruk Ateş</p>
<p>I have seen Modernizr, the important difference between it and my solution is that my solution has the ability to determine support for any styles you provide the method as opposed to Modernizr&#8217;s select few. </p>
<p>Also, my solution is capable of determining support for assignable style values.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Faruk Ateş</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-629</link>
		<dc:creator>Faruk Ateş</dc:creator>
		<pubDate>Tue, 26 Jan 2010 21:37:34 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-629</guid>
		<description>Hi Ryan,

Have you seen Modernizr? It&#039;s a library that does, well, precisely this kinda stuff :-)

http://www.modernizr.com/

(I know, this seems spammy, but it seems to me like you could save some time and effort here… :))</description>
		<content:encoded><![CDATA[<p>Hi Ryan,</p>
<p>Have you seen Modernizr? It&#8217;s a library that does, well, precisely this kinda stuff <img src='http://ryanmorr.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.modernizr.com/" rel="nofollow">http://www.modernizr.com/</a></p>
<p>(I know, this seems spammy, but it seems to me like you could save some time and effort here… <img src='http://ryanmorr.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan Morr</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-495</link>
		<dc:creator>Ryan Morr</dc:creator>
		<pubDate>Thu, 19 Nov 2009 16:53:43 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-495</guid>
		<description>@Xavier

The only problem with your implementation is that the replace method of strings do not support a function as a second parameter in Safari 2.0.2.</description>
		<content:encoded><![CDATA[<p>@Xavier</p>
<p>The only problem with your implementation is that the replace method of strings do not support a function as a second parameter in Safari 2.0.2.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xavier</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-494</link>
		<dc:creator>Xavier</dc:creator>
		<pubDate>Thu, 19 Nov 2009 16:12:49 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-494</guid>
		<description>// Another camelcase function :

String.prototype.camelcase = function()
{
	 return this
	 	.toString()
	 	.toLowerCase()
	 	.replace(/(-&#124;\.&#124;\s)(\w)/g, function(a,b,c)
	 	{
	 	 	 return c.toUpperCase();
		}) ;
}

console.log( &#039; www-xxx.yyy zzz&#039;)</description>
		<content:encoded><![CDATA[<p>// Another camelcase function :</p>
<p>String.prototype.camelcase = function()<br />
{<br />
	 return this<br />
	 	.toString()<br />
	 	.toLowerCase()<br />
	 	.replace(/(-|\.|\s)(\w)/g, function(a,b,c)<br />
	 	{<br />
	 	 	 return c.toUpperCase();<br />
		}) ;<br />
}</p>
<p>console.log( &#8216; www-xxx.yyy zzz&#8217;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cezary Tomczyk</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-493</link>
		<dc:creator>Cezary Tomczyk</dc:creator>
		<pubDate>Thu, 19 Nov 2009 11:46:09 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-493</guid>
		<description>You where right. I forgot about it. I become accustomed to normal browsers.</description>
		<content:encoded><![CDATA[<p>You where right. I forgot about it. I become accustomed to normal browsers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan Morr</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-278</link>
		<dc:creator>Ryan Morr</dc:creator>
		<pubDate>Tue, 14 Jul 2009 13:08:07 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-278</guid>
		<description>@Cezary Tomczyk

The test page is correct, IE7 only supports opacity through the use of filters. The opacity property is not supported in any version of IE. See here: &lt;a href=&quot;http://www.quirksmode.org/css/opacity.html&quot; rel=&quot;nofollow&quot;&gt;http://www.quirksmode.org/css/opacity.html&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>@Cezary Tomczyk</p>
<p>The test page is correct, IE7 only supports opacity through the use of filters. The opacity property is not supported in any version of IE. See here: <a href="http://www.quirksmode.org/css/opacity.html" rel="nofollow">http://www.quirksmode.org/css/opacity.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cezary Tomczyk</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-276</link>
		<dc:creator>Cezary Tomczyk</dc:creator>
		<pubDate>Tue, 14 Jul 2009 09:50:56 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-276</guid>
		<description>It&#039;s seems that in code is some bug. The test page told me that IE7 do not support opacity. That&#039;s not true.</description>
		<content:encoded><![CDATA[<p>It&#8217;s seems that in code is some bug. The test page told me that IE7 do not support opacity. That&#8217;s not true.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan Morr</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-254</link>
		<dc:creator>Ryan Morr</dc:creator>
		<pubDate>Sun, 14 Jun 2009 04:55:46 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-254</guid>
		<description>@Kean Tan

The camel case method was added solely for syntactic sugar but your absolutely right, that is all it is really good for. I feel the real mistake (in the animation library) is the requirement to use hyphenated styles such as background-color. I&#039;ll be sure to fix that in the next version due out later this month.

As for typeof undefined, I was aware of both points you brought up but I suppose I got a little caught up in my strict type checking to put two and two together.

What you recommended reminds me of the window[&quot;undefined&quot;] = window[&quot;undefined&quot;] hack (although I&#039;m not sure if its appropriate to call it a hack). Actually, I&#039;ve recently started to use the &quot;in&quot; operator to perform checks against undefined values, (&quot;prop&quot; in cache).

To the point of writing my own library; I have considered it but ultimately felt there was nothing I could offer somebody else hasn&#039;t already.

Not to mention I am under the belief that every project deserves its own library; it would be a bit hypocritical of me to release my own. This belief and my eagerness to get involved in the open source community brought me to one of the few voids in the community; standalone and lightweight modules. I already plan on releasing a whole slew of modules in the future. 

Great job on the library too! Glad my animation library served you well.

Thanks!</description>
		<content:encoded><![CDATA[<p>@Kean Tan</p>
<p>The camel case method was added solely for syntactic sugar but your absolutely right, that is all it is really good for. I feel the real mistake (in the animation library) is the requirement to use hyphenated styles such as background-color. I&#8217;ll be sure to fix that in the next version due out later this month.</p>
<p>As for typeof undefined, I was aware of both points you brought up but I suppose I got a little caught up in my strict type checking to put two and two together.</p>
<p>What you recommended reminds me of the window["undefined"] = window["undefined"] hack (although I&#8217;m not sure if its appropriate to call it a hack). Actually, I&#8217;ve recently started to use the &#8220;in&#8221; operator to perform checks against undefined values, (&#8220;prop&#8221; in cache).</p>
<p>To the point of writing my own library; I have considered it but ultimately felt there was nothing I could offer somebody else hasn&#8217;t already.</p>
<p>Not to mention I am under the belief that every project deserves its own library; it would be a bit hypocritical of me to release my own. This belief and my eagerness to get involved in the open source community brought me to one of the few voids in the community; standalone and lightweight modules. I already plan on releasing a whole slew of modules in the future. </p>
<p>Great job on the library too! Glad my animation library served you well.</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kean Tan</title>
		<link>http://ryanmorr.com/archives/detecting-browser-css-style-support/comment-page-1#comment-252</link>
		<dc:creator>Kean Tan</dc:creator>
		<pubDate>Thu, 11 Jun 2009 23:57:12 +0000</pubDate>
		<guid isPermaLink="false">http://ryanmorr.com/?p=1190#comment-252</guid>
		<description>I like the concept and actually there&#039;s a similar discussion at kangax&#039;s blog.

There are some minor things that I want to point out. Both philosophically and coding-wise.

Philosophically: the camelCase function is evil, it&#039;s more evil when you use getStyle and setStyle inside an animation loop. I would prefer to educate coders in the documentation to camelCase their CSS properties. I realized that when looking at your animation library.

Coding-wise: typeof xxx === &quot;undefined&quot;;
1. Typeof always return strings, strict === is not needed, and the performance penalty is minimal, and I don&#039;t follow my own advice.

2. Munging undefine is faster than using typeof

var undefined; // no values associated
xxx === undefined; // returns true if xxx is undefined

Looking at some of your previous posts, I am wondering why you did not create a complete DOM library since I think you have enough knowledge to do so.

Oh BTW, I gained some insights into DOM animation through the understanding of how your animation library works. I made a library out of that it&#039;s hosted at github.

http://github.com/kltan/short/tree/2d4fb83712aaf76ecaf9dfd1c0ad43fcef9e168f/source

Have a nice day.</description>
		<content:encoded><![CDATA[<p>I like the concept and actually there&#8217;s a similar discussion at kangax&#8217;s blog.</p>
<p>There are some minor things that I want to point out. Both philosophically and coding-wise.</p>
<p>Philosophically: the camelCase function is evil, it&#8217;s more evil when you use getStyle and setStyle inside an animation loop. I would prefer to educate coders in the documentation to camelCase their CSS properties. I realized that when looking at your animation library.</p>
<p>Coding-wise: typeof xxx === &#8220;undefined&#8221;;<br />
1. Typeof always return strings, strict === is not needed, and the performance penalty is minimal, and I don&#8217;t follow my own advice.</p>
<p>2. Munging undefine is faster than using typeof</p>
<p>var undefined; // no values associated<br />
xxx === undefined; // returns true if xxx is undefined</p>
<p>Looking at some of your previous posts, I am wondering why you did not create a complete DOM library since I think you have enough knowledge to do so.</p>
<p>Oh BTW, I gained some insights into DOM animation through the understanding of how your animation library works. I made a library out of that it&#8217;s hosted at github.</p>
<p><a href="http://github.com/kltan/short/tree/2d4fb83712aaf76ecaf9dfd1c0ad43fcef9e168f/source" rel="nofollow">http://github.com/kltan/short/tree/2d4fb83712aaf76ecaf9dfd1c0ad43fcef9e168f/source</a></p>
<p>Have a nice day.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

