<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pinceladas da Web &#187; JavaScript</title>
	<atom:link href="http://www.pinceladasdaweb.com.br/blog/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pinceladasdaweb.com.br/blog</link>
	<description>Tutoriais sobre: XHTML, CSS, JavaScript e WebStandards</description>
	<lastBuildDate>Wed, 01 Sep 2010 13:43:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Coloque o jogo do Pac Man no seu site</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/#comments</comments>
		<pubDate>Mon, 24 May 2010 11:43:19 +0000</pubDate>
		<dc:creator>Pedro Rogério</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web2.0]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=4290</guid>
		<description><![CDATA[No dia 21 de Maio de 2010, em comemoração aos 30 anos do jogo Pac Man, o Google colocou em sua home uma versão do Jogo toda desenvolvida em JavaScript, alguns pensaram que era só de enfeite, mas os mais espertos viram que era possível jogar e em consequência tomar vários esporros do chefe por [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/">Coloque o jogo do Pac Man no seu site</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<div class="aligncenter"><img src="http://www.pinceladasdaweb.com.br/blog/uploads/google-pacman.jpg" alt="Google Pac Man" title="Google Pac Man" /></div>
<p>No dia 21 de Maio de 2010, em comemoração aos 30 anos do jogo Pac Man, o Google colocou em sua home uma versão do Jogo toda desenvolvida em JavaScript, alguns pensaram que era só de enfeite, mas os mais espertos viram que era possível jogar e em consequência tomar vários esporros do chefe por conta disso.</p>
<p><span id="more-4290"></span></p>
<p>Se você não viu, pode ver na <a href="http://www.google.com/pacman/" title="Google Pac Man" rel="external">seguinte URL</a> a versão que foi ao ar nesse dia. Foi então que <a href="http://www.rustybrick.com/google-pacman-code.html" title="How To Get Google's Pac Man Game On Your Page" rel="external">Michael</a> pegou o código fonte e disponibilizou em seu blog, com isso, qualquer pessoa pode inserir o jogo agora em seu site/blog. Ou então faça o download do código no <a href="http://macek.github.com/google_pacman/" title="Google Pac Man" rel="external">GitHub</a>.</p>
<p>Caso queira vê-lo em funcionamento, basta dar uma olhada <a href="http://www.pinceladasdaweb.com.br/blog/uploads/pacman.html" title="Google Pac Man" rel="alternate">aqui</a>. Para jogar clique em Insert Coin. Ao contrário do que muita gente pensava, não é feito em HTML5, é feito em puro JavaScript, além de usar do Flash para o som do jogo.</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/">Coloque o jogo do Pac Man no seu site</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/14/aprendendo-javascript/" title="Aprendendo JavaScript">Aprendendo JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/" title="As engines de JavaScript">As engines de JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/" title="CSS3 Selectors &#038; JavaScript &#8216;this&#8217;">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/23/palestra-designers-x-javascript/" title="Palestra: Designers x JavaScript">Palestra: Designers x JavaScript</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>As engines de JavaScript</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 15:20:55 +0000</pubDate>
		<dc:creator>Jeronimo Fagundes</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=4128</guid>
		<description><![CDATA[Com os lançamentos de novos navegadores e novas versões nos últimos anos, o desempenho de JavaScript melhorou muito. Nesta posta vemos as principais responsáveis por essa melhoria: as engines de JavaScript.<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/">As engines de JavaScript</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<div class="aligncenter"><img src="http://www.pinceladasdaweb.com.br/blog/uploads/javascript-save-all.jpg" alt="O JavaScript vai salvar a todos nós" title="O JavaScript vai salvar a todos nós" /></div>
<p>Este é um post rápido de se ler. Vai a título de curiosidade.</p>
<p>Com os lançamentos de novos navegadores e novas versões nos últimos anos, o desempenho de JavaScript melhorou muito. Muito disso se deve a melhorias (e mesmo substituições completas) das engines de JavaScript de cada navegador.</p>
<p><span id="more-4128"></span></p>
<p>A seguir, uma pequena lista das engines de JavaScript atuais, da mais rápida para a mais lenta.</p>
<ul>
<li><strong><em>Carakan</em></strong> &#8211; é a engine lançada no Opera 10.50. Testes demonstram que ela é a engine mais rápida atualmente.</li>
<li><strong><em>V8</em></strong> &#8211; a engine do Google Chrome. É muito importante na história recente dos browsers, por ter sido a primeira a dar um salto de desempenho frente às demais engines. Tem praticamente um empare técnico com a Carakan em termos de desempenho, perde por quase nada.</li>
<li><strong><em>SquirrelFish</em></strong> &#8211; antigamente era chamada JavaScriptCore, mas adquiriu seu novo nome após ter integrado o JIT (Just-In-Time compilation). É usada no Safari, sendo parte do WebKit.</li>
<li><strong><em>TraceMonkey</em></strong> &#8211; a engine lançada no Firefox 3.5. Uma evolução da antiga SpiderMonkey, que teve uma grande melhoria de desempenho.</li>
<li><strong><em>JScript</em></strong> &#8211; engine do Internet Explorer, faz parte da engine de layout Trident. Perto das demais engines, tem um péssimo desempenho quanto a tempo de execução.</li>
</ul>
<p>E essas são as principais engines do mercado atualmente. Espero que tenha sido interessante aos leitores saber dessas informações.</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/">As engines de JavaScript</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/" title="Coloque o jogo do Pac Man no seu site">Coloque o jogo do Pac Man no seu site</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/14/aprendendo-javascript/" title="Aprendendo JavaScript">Aprendendo JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/" title="CSS3 Selectors &#038; JavaScript &#8216;this&#8217;">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/23/palestra-designers-x-javascript/" title="Palestra: Designers x JavaScript">Palestra: Designers x JavaScript</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>CSS3 Selectors &amp; JavaScript &#8216;this&#8217;</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 12:14:29 +0000</pubDate>
		<dc:creator>Pedro Rogério</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=4180</guid>
		<description><![CDATA[Em mais um vídeo do site Doctype.tv, eles dessa vez irão nos ensinar a trabalhar com seletores CSS3 e nos mostrar o significado da variável &#8220;this&#8221; do JavaScript: CSS3 Selectors &#038; JavaScript &#8216;this&#8217; J&#225; conhece o meu outro blog? O endere&#231;o &#233; o: CSS no Lanche Voc&#234; ainda n&#227;o est&#225; me seguindo no Twitter, o [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Em <a href="http://doctype.tv/this" title="CSS3 Selectors &#038; JavaScript's 'this'">mais um vídeo</a> do site <a href="http://doctype.tv/" title="Doctype.tv" rel="external">Doctype.tv</a>, eles dessa vez irão nos ensinar a trabalhar com seletores CSS3 e nos mostrar o significado da variável &#8220;this&#8221; do JavaScript:</p>
<div class="aligncenter"><object height="383" width="610" data="http://www.viddler.com/player/a26509a4/" type="application/x-shockwave-flash"><param name="quality" value="high"></param><param value="always" name="allowScriptAccess"></param><param value="true" name="allowFullScreen"></param><param value="fake=1" name="flashvars"></param><param name="movie" value="http://www.viddler.com/player/a26509a4/"><img src="http://www.pinceladasdaweb.com.br/blog/uploads/youtube/video.png" alt="Vídeo (Objeto multimídia)"/></param></object></div>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2008/11/18/seletores-css-com-jquery/" title="Seletores CSS com jQuery">Seletores CSS com jQuery</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2008/11/05/peppy-seletor-javascript-css3-mais-rapido-da-web/" title="Peppy &#8211; Seletor JavaScript CSS3 mais rápido da Web">Peppy &#8211; Seletor JavaScript CSS3 mais rápido da Web</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/19/css-cookbook/" title="CSS Cookbook">CSS Cookbook</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/" title="Coloque o jogo do Pac Man no seu site">Coloque o jogo do Pac Man no seu site</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Palestra: Designers x JavaScript</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2010/03/23/palestra-designers-x-javascript/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2010/03/23/palestra-designers-x-javascript/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 12:58:41 +0000</pubDate>
		<dc:creator>Pedro Rogério</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=4154</guid>
		<description><![CDATA[O Grupo Impacta está convidando a todos para assistir da palestra gratuita &#8220;Web Designers X Javascript&#8221;, ministrada pelo consultor da Adobe no Brasil Leon Kulikowski. O conteúdo apresentado ajudará os profissionais a melhorar sua produtividade no dia a dia ao desenvolverem sites, aplicando métodos para organização do trabalho; a lidar com a necessidade crescente de [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/23/palestra-designers-x-javascript/">Palestra: Designers x JavaScript</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<div class="aligncenter"><img src="http://www.pinceladasdaweb.com.br/blog/uploads/palestra-designersxjavascript.jpg" alt="Palestra Designers x JavaScript" title="Palestra Designers x JavaScript" /></div>
<p>O Grupo <a href="http://www.impacta.com.br" title="Impacta" rel="external">Impacta</a> está convidando a todos para assistir da palestra gratuita &#8220;Web Designers X Javascript&#8221;, ministrada pelo consultor da Adobe no Brasil <strong>Leon Kulikowski</strong>.</p>
<p>O conteúdo apresentado ajudará os profissionais a melhorar sua produtividade no dia a dia ao desenvolverem sites, aplicando métodos para organização do trabalho; a lidar com a necessidade crescente de layouts interativos, mas sem desejar tornar-se um programador; e a criar livremente sem que isso incorra em atrasos no prazo de entrega.</p>
<p><span id="more-4154"></span></p>
<h3>Conteúdo programático</h3>
<ul>
<li>Metodologias para workflow</li>
<li>Frameworks Javascript</li>
<li>Validação do código fonte</li>
<li>Pensando em acessibilidade</li>
<li>Pensando em semântica</li>
</ul>
<div class="aligncenter"><img src="http://www.pinceladasdaweb.com.br/blog/uploads/endereco-palestra.gif" alt="Palestra Designers x JavaScript" title="Palestra Designers x JavaScript" /></div>
<p>Caso queira se inscrever, basta acessar o <a href="http://www.impacta.com.br/eventos/palestras-gratuitas.php" title="Palestra Designers x JavaScript" rel="external">seguinte link</a>. Nos encontramos lá.</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/23/palestra-designers-x-javascript/">Palestra: Designers x JavaScript</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/" title="Coloque o jogo do Pac Man no seu site">Coloque o jogo do Pac Man no seu site</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/14/aprendendo-javascript/" title="Aprendendo JavaScript">Aprendendo JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/" title="As engines de JavaScript">As engines de JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/" title="CSS3 Selectors &#038; JavaScript &#8216;this&#8217;">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2010/03/23/palestra-designers-x-javascript/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>CSS3 Columns &amp; jQuery Plugins</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2010/03/18/css3-columns-e-jquery-plugins/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2010/03/18/css3-columns-e-jquery-plugins/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 12:02:22 +0000</pubDate>
		<dc:creator>Pedro Rogério</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=4133</guid>
		<description><![CDATA[Nesse tutorial você irá aprender a trabalhar com o módulo column das CSS3 e a como desenvolver plugins para jQuery: CSS3 Columns &#038; jQuery Plugins J&#225; conhece o meu outro blog? O endere&#231;o &#233; o: CSS no Lanche Voc&#234; ainda n&#227;o est&#225; me seguindo no Twitter, o que est&#225; esperando para fazer isso? Seletores CSS [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/18/css3-columns-e-jquery-plugins/">CSS3 Columns &#038; jQuery Plugins</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Nesse <a href="http://doctype.tv/plugin" title="CSS3 Columns &#038; jQuery Plugins" rel="external">tutorial</a> você irá aprender a trabalhar com o <strong>módulo column das CSS3</strong> e a <strong>como desenvolver plugins para jQuery</strong>:</p>
<div class="aligncenter"><object width="610" height="383" type="application/x-shockwave-flash" data="http://www.viddler.com/player/a8ac65aa/"><param value="high" name="quality"></param><param name="allowScriptAccess" value="always"></param><param name="allowFullScreen" value="true"></param><param name="flashvars" value="fake=1"></param><param value="http://www.viddler.com/player/a8ac65aa/" name="movie"><img alt="Vídeo (Objeto multimídia)" src="http://www.pinceladasdaweb.com.br/blog/uploads/youtube/video.png"/></param></object></div>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/18/css3-columns-e-jquery-plugins/">CSS3 Columns &#038; jQuery Plugins</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2008/11/18/seletores-css-com-jquery/" title="Seletores CSS com jQuery">Seletores CSS com jQuery</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/19/css-cookbook/" title="CSS Cookbook">CSS Cookbook</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/" title="CSS3 Selectors &#038; JavaScript &#8216;this&#8217;">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/11/css3-borders-e-html5-sections/" title="CSS3 Borders &#038; HTML5 Sections">CSS3 Borders &#038; HTML5 Sections</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/08/help-do-jquery-1-4-em-formato-chm/" title="Help do jQuery 1.4 em formato .chm">Help do jQuery 1.4 em formato .chm</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2010/03/18/css3-columns-e-jquery-plugins/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Validação de formulários &#8211; De quem é a responsabilidade?</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2010/03/12/validacao-de-formularios-de-quem-e-a-responsabilidade/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2010/03/12/validacao-de-formularios-de-quem-e-a-responsabilidade/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 12:46:54 +0000</pubDate>
		<dc:creator>Pedro Rogério</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=4117</guid>
		<description><![CDATA[De quem é a responsabilidade de validar um formulário? Do desenvolvedor front-end ou do programador? A sim, vocês preferem tirar no cara ou coroa. A um tempo atrás fui questionado sobre isso e então resolvi fazer um post sobre o assunto para saber a opinião de vocês. Então, imaginem um formulário, simples de cadastro por [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/12/validacao-de-formularios-de-quem-e-a-responsabilidade/">Validação de formulários &#8211; De quem é a responsabilidade?</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<div class="aligncenter"><img src="http://www.pinceladasdaweb.com.br/blog/uploads/cara-ou-coroa.jpg" alt="Você tira no cara ou coroa?" title="Você tira no cara ou coroa?" /></div>
<p>De quem é a responsabilidade de validar um formulário? Do desenvolvedor front-end ou do programador? A sim, vocês preferem tirar no cara ou coroa.</p>
<p><span id="more-4117"></span></p>
<p>A um tempo atrás fui questionado sobre isso e então resolvi fazer um post sobre o assunto para saber a opinião de vocês. Então, imaginem um formulário, simples de cadastro por exemplo, com alguns campos obrigatórios como Nome, Email, CPF, etc. Na sua opinião, quem deve efetuar a validação desses dados é somente o desenvolvedor front-end através de JavaScript, ou ele deve deixar isso de lado e a validação deve ser toda feita do lado servidor?</p>
<p>A minha opinião é a seguinte, a validação deve ser efetuada do lado cliente e do lado servidor, muitos desenvolvedores na maioria das vezes não estão nem aí pra isso e só querem saber da validação do lado cliente.</p>
<p>Sabe por que digo que a validação deve ser feita também do lador servidor, leve em consideração que o JavaScript roda do lado cliente, portanto, pode em algum momento falhar e você terá salvo dados inconsistentes em seu banco de dados. E você, qual sua opinião?</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/12/validacao-de-formularios-de-quem-e-a-responsabilidade/">Validação de formulários &#8211; De quem é a responsabilidade?</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2007/10/04/72-acronimos-que-falam-os-geeks/" title="72 Acrônimos que falam os Geeks">72 Acrônimos que falam os Geeks</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2006/10/25/aprenda-php-mysql-javascript-css/" title="Aprenda PHP, MySQL, JavaScript, CSS">Aprenda PHP, MySQL, JavaScript, CSS</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2006/10/23/tutocle-tutoriais-para-desenvolvedores-web/" title="Tutocle &#8211; Tutoriais para desenvolvedores web">Tutocle &#8211; Tutoriais para desenvolvedores web</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2006/07/05/eyeos-um-sistema-operacional-rodando-na-web/" title="EyeOS: um sistema operacional rodando na web">EyeOS: um sistema operacional rodando na web</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2010/03/12/validacao-de-formularios-de-quem-e-a-responsabilidade/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
		<item>
		<title>Help do jQuery 1.4 em formato .chm</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2010/03/08/help-do-jquery-1-4-em-formato-chm/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2010/03/08/help-do-jquery-1-4-em-formato-chm/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 12:15:20 +0000</pubDate>
		<dc:creator>Pedro Rogério</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=4063</guid>
		<description><![CDATA[Arquivos do tipo .chm são arquivos de ajuda do Windows semelhantes aos .hlp, porém são compilados utilizando fontes .html. Se você buscava até agora uma referência de consulta rápida para o Framework jQuery, está aí a solução, ótimo para aquelas horas em que você precisa consultar a ajuda do jQuery está sem internet. Se você [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/08/help-do-jquery-1-4-em-formato-chm/">Help do jQuery 1.4 em formato .chm</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<div class="aligncenter"><img src="http://www.pinceladasdaweb.com.br/blog/uploads/jquery/jquery-logo.gif" alt="jQuery" title="jQuery" /></div>
<p>Arquivos do tipo .chm são arquivos de ajuda do Windows semelhantes aos .hlp, porém são compilados utilizando fontes .html. Se você buscava até agora uma referência de consulta rápida para o Framework jQuery, está aí a solução, ótimo para aquelas horas em que você precisa consultar a <a href="http://docs.jquery.com/" title="Help do JQuery" rel="external">ajuda do jQuery</a> está sem internet. Se você utiliza Windows, basta <a href="http://www.pinceladasdaweb.com.br/blog/uploads/jquery/jquery-1.4.chm.7z" title="Download Help do jQuery 1.4 em formato .chm" rel="alternate enclosure">baixar o arquivo</a>, descomprimir o mesmo e utilizá-lo.</p>
<p>Caso você abra o arquivo e receba um aviso de página não encontrada ou algo do tipo, efetue os seguintes passos:</p>
<p><span id="more-4063"></span></p>
<ul>
<li>Clique com o botão direito do mouse no arquivo CHM e clique em <strong>Propriedades</strong>.</li>
<li>Clique em <strong>Desbloquear</strong>.</li>
<li>Clique duas vezes no arquivo .chm para abrí-lo.</li>
</ul>
<p>Maiores informações você pode ver no site da <a href="http://support.microsoft.com/kb/902225/pt-br" title="Não é possível abrir arquivos da Ajuda em HTML pelo Internet Explorer" rel="external">Microsoft</a>.</p>
<h3>Usuários de Linux</h3>
<p>Para <strong>visualizar arquivos .chm no Linux</strong> você vai precisar de um programa chamado <a href="http://xchm.sourceforge.net/">xchm</a>, para instalá-lo no Ubuntu, por exemplo, basta executar o seguinte comando:</p>
<pre class="brush: c">
sudo apt-get install xchm
</pre>
<h3>Usuários de MAC OS</h3>
<p>Os usuários de MAC OSX devem ter o programa <a href="http://chmox.sourceforge.net/" title="Chmox - Read your CHM documents on your Mac" rel="external">Chmox</a> instalado para <strong>visualizar arquivos .chm no MAC OSX</strong>.</p>
<p>Todos os créditos do arquivo são do site <a href="http://charupload.wordpress.com/2007/12/07/jquery-documentation-chm/" title="jQuery documentation (CHM)" rel="external">charupload</a> por ter compilado o mesmo.</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/03/08/help-do-jquery-1-4-em-formato-chm/">Help do jQuery 1.4 em formato .chm</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2009/05/13/colunas-com-alturas-iguais-com-javascript/" title="Colunas com alturas iguais com JavaScript">Colunas com alturas iguais com JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2009/05/01/ebook-gratis-de-jankoatwarpspeed-os-melhores-tutoriais/" title="Ebook grátis de JankoAtWarpSpeed: Os melhores tutoriais ">Ebook grátis de JankoAtWarpSpeed: Os melhores tutoriais </a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2009/02/15/live-event-binding-com-jquery-13/" title="Live event binding com jQuery 1.3">Live event binding com jQuery 1.3</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2009/01/22/jquery-price-plugin/" title="jQuery Price Plugin">jQuery Price Plugin</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2009/01/19/prototype-vs-jquery/" title="Prototype vs. jQuery">Prototype vs. jQuery</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2010/03/08/help-do-jquery-1-4-em-formato-chm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaScript Tabs sem Framework ou Plugin</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2010/01/13/javascript-tabs-sem-framework-ou-plugin/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2010/01/13/javascript-tabs-sem-framework-ou-plugin/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 14:03:23 +0000</pubDate>
		<dc:creator>Pedro Rogério</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=3728</guid>
		<description><![CDATA[Com a popularização dos Frameworks JavaScript fica a cada dia mais difícil você encontar alguma coisa na web desenvolvida com puro JavaScript. Desenvolver um sistema de Tabs com a utilização de jQuery é muito simples, mas as vezes pode ser desnecessário você utilizar tanto JavaScript para fazer simples tabs. Foi pensando nisso que resolvi efetuar [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/01/13/javascript-tabs-sem-framework-ou-plugin/">JavaScript Tabs sem Framework ou Plugin</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<div class="aligncenter"><img src="http://www.pinceladasdaweb.com.br/blog/uploads/excessive-javascript.png" alt="Excessive JavaScript" title="Excessive JavaScript" /></div>
<p>Com a popularização dos <a href="http://www.cssnolanche.com.br/22-javascript-frameworks/" title="22 Frameworks JavaScript" rel="external">Frameworks JavaScript</a> fica a cada dia mais difícil você encontar alguma coisa na web desenvolvida com puro JavaScript. Desenvolver um sistema de Tabs com a utilização de jQuery é muito simples, mas as vezes pode ser desnecessário você utilizar tanto JavaScript para fazer simples tabs. Foi pensando nisso que resolvi efetuar a tradução do artigo do site <a href="http://www.elated.com/articles/javascript-tabs/" title="Tutorial: JavaScript Tabs - Create Tabbed Web Pages Easily" rel="external">Elated</a>, onde ele ensina de uma forma muito simples a desenvolver um sistema de Tabs com puro JavaScript.</p>
<p><span id="more-3728"></span></p>
<h3>Criação do HTML para nossas abas</h3>
<p>O HTML para as tabs e conteúdo é muito simples. Você armazena o conteúdo de cada tab dentro de um elemento div com uma classe chamada tabContent e um id exclusivo para referência. Aqui está como exemplo o conteúdo da primeira de 3 tabs:</p>
<pre class="brush: xhtml">
&lt;div class=&quot;tabContent&quot; id=&quot;about&quot;&gt;
  &lt;h2&gt;About JavaScript tabs&lt;/h2&gt;
  &lt;div&gt;
    &lt;p&gt;JavaScript tabs partition your Web page content into tabbed sections. Only one section at a time is visible.&lt;/p&gt;
    &lt;p&gt;The code is written in such a way that the page degrades gracefully in browsers that don&#039;t support JavaScript or CSS.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
</pre>
<p>As tabs são simplesmente links dentro de uma lista desordenada:</p>
<pre class="brush: xhtml">
&lt;ul id=&quot;tabs&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#about&quot;&gt;About JavaScript tabs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#advantages&quot;&gt;Advantages of tabs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#usage&quot;&gt;Using tabs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Você deve definir que o ul tenha o id &#8220;tabs&#8221; para que o código JavaScript possa localizá-lo. Cada link dentro da lista de links faz referência a sua div conteúdo (&#8220;about&#8221;, &#8220;advantages&#8221;, e &#8220;usage&#8221;). Uma vez que eles são links padrão do HTML, também funcionam com o JavaScript desabilitado.</p>
<p>Você pode adicionar quantas tabs quiser a sua página. Basta criar uma nova div com um identificação única e em seguida adicionar um link a mesma dentro da lista de tabs.</p>
<h3>Criação do CSS</h3>
<p>O CSS é necessário para tornar as guias parecidas com abas e também tornar a sua aparência mais agradável:</p>
<pre class="brush: css">
body { font-size: 80%; font-family: &#039;Lucida Grande&#039;, Verdana, Arial, Sans-Serif; }
ul#tabs { list-style-type: none; margin: 30px 0 0 0; padding: 0 0 0.3em 0; }
ul#tabs li { display: inline; }
ul#tabs li a { color: #42454a; background-color: #dedbde; border: 1px solid #c9c3ba; border-bottom: none; padding: 0.3em; text-decoration: none; }
ul#tabs li a:hover { background-color: #f1f0ee; }
ul#tabs li a.selected { color: #000; background-color: #f1f0ee; font-weight: bold; padding: 0.7em 0.3em 0.38em 0.3em; }
div.tabContent { border: 1px solid #c9c3ba; padding: 0.5em; background-color: #f1f0ee; }
div.tabContent.hide { display: none; }
</pre>
<p>Essas regras CSS funcionam da seguinte forma:</p>
<dl>
<dt><strong>body</strong></dt>
<dd>Contém as regras de fonte para a página e as tabs.</dd>
<dt><strong>ul#tabs</strong></dt>
<dd>Definição de estilo para as guias e remoção dos bullets da lista.</dd>
<dt><strong>ul#tabs li</strong></dt>
<dd>O uso de display:inline é para que as tabs tenham sua disposição na horizontal.</dd>
<dt><strong>ul#tabs li a</strong></dt>
<dd>Aplicamos estilos aos links da lista. Cada link agora possui uma borda, exceto border-bottom para que ela combine perfeitamente com sua div conteúdo.</dd>
<dt><strong>ul#tabs li a:hover</strong></dt>
<dd>A tab fica em destaque ao passar o mouse sob ela.</dd>
<dt><strong>ul#tabs li a.selected</strong></dt>
<dd>Estilos definidos para a guia selecionada, aplicando um fundo mais claro, texto em negrito e também aumentamos o tamanho da fonte. Observe que o padding-bottom foi definido como 0.38em para que ele se funda com a sua div conteúdo.</dd>
<dt><strong>div.tabContent</strong></dt>
<dd>Define um estilo para as áreas de conteúdo.</dd>
<dt><strong>div.tabContent.hide</strong></dt>
<dd>Usado para ocultar as tabs não selecionadas.</dd>
</dl>
<h3>Criação do código JavaScript</h3>
<p>Finalmente, é claro, você precisa de JavaScript para que as tabs funcionem.</p>
<ul>
<li>Adicionar a função showTab() ao evento onclick para cada um dos links das tabs.</li>
<li>Ocultar todas as divs conteúdo, exceto a primeira, de modo que só o conteúdo da primeira tab esteja visível ao carregar a página.</li>
<li>getFirstChildWithTagName() é uma função auxiliar que recupera o primeiro filho de um determinado elemento que possui um tag name.</li>
<li>gethash () é outra função auxiliar que retorna parte da URL que aparece após o símbolo #.</li>
</ul>
<p>Veja como funciona essas funções.</p>
<h4>Função init()</h4>
<p>A primeira, e mais complexa, é a função init(). É chamada quando a página é carregada, graças ao evento onload no elemento body:</p>
<pre><code>&lt;body onload="init()"&gt;</code></pre>
<p>Abaixo a própria função:</p>
<pre class="brush: javascript">
function init() {

      // Pega todas as tabs e as divs conteúdo da página
      var tabListItems = document.getElementById(&#039;tabs&#039;).childNodes;
      for ( var i = 0; i &lt; tabListItems.length; i++ ) {
        if ( tabListItems[i].nodeName == &quot;LI&quot; ) {
          var tabLink = getFirstChildWithTagName( tabListItems[i], &#039;A&#039; );
          var id = getHash( tabLink.getAttribute(&#039;href&#039;) );
          tabLinks[id] = tabLink;
          contentDivs[id] = document.getElementById( id );
        }
      }

      // Adiciona eventos onclick as tabs e destaca a primeira aba
      var i = 0;

      for ( var id in tabLinks ) {
        tabLinks[id].onclick = showTab;
        tabLinks[id].onfocus = function() { this.blur() };
        if ( i == 0 ) tabLinks[id].className = &#039;selected&#039;;
        i++;
      }

      // Oculta todas as divs conteúdo, exceto a primeira
      var i = 0;

      for ( var id in contentDivs ) {
        if ( i != 0 ) contentDivs[id].className = &#039;tabContent hide&#039;;
        i++;
      }
    }
</pre>
<p>Essa função faz 3 coisas:</p>
<ul>
<li>Ele percorre todos os elementos li na lista desordenada. Para cada elemento li ele chama a função getFirstChildWithTagName() para recuperar o elemento dentro com o link. Em auxílio, ele também chama a função getHash() para extrair parte da URL do link, após o hash, que é o ID da div conteúdo correspondente. O link então é armazenado no array tabLinks, e a div de conteúdo é armazenada no array contentDivs.</li>
<li>Ele atribui o evento onclick com a função showTab() para cada link da lista e destaca a primeira tab com a classe &#8216;selected&#8217;.</li>
<li>Ele oculta todas as divs conteúdo, exceto a primeira, definindo que as divs tenham as classes &#8216;tabContent hide&#8217;.</li>
</ul>
<h4>Função showTab()</h4>
<p>showTab() é chamada toda vez que uma tab é clicada. Ele destaca a tab selecionada e mostra o conteúdo relacionado a tab. Ele também remove o destaque das outras tabs e oculta as divs com o conteúdo relacionado.</p>
<pre class="brush: javascript">
function showTab() {
      var selectedId = getHash( this.getAttribute(&#039;href&#039;) );

      // Destaca a tab selecionada e remove o destaque das outras
      // Mostra a div com o conteúdo relacionado e oculta as outras
      for ( var id in contentDivs ) {
        if ( id == selectedId ) {
          tabLinks[id].className = &#039;selected&#039;;
          contentDivs[id].className = &#039;tabContent&#039;;
        } else {
          tabLinks[id].className = &#039;&#039;;
          contentDivs[id].className = &#039;tabContent hide&#039;;
        }
      }

      // Faz com que o browser não siga o link
      return false;
    }
</pre>
<p>A função estrai o ID do link selecionado e os armazena na variável selectedId. Em seguida, percorre todos os IDs. Nos selecionados ocorre o destaque a div com o conteúdo correspondente é mostrado, para as outras tabs o destaque é removido e o conteúdo relacionado é oculto.</p>
<p>A função possui um return false para que anule o comportamento padrão do browser de seguir o link e adicionar o mesmo ao histórico do browser.</p>
<h4>Função getFirstChildWithTagName()</h4>
<p>Essa função retorna o primeiro filho de um elemento especificado correspondente a tag. init() chama essa função para recuperar o link dentro de cada item da lista.</p>
<pre class="brush: javascript">
function getFirstChildWithTagName( element, tagName ) {
      for ( var i = 0; i &lt; element.childNodes.length; i++ ) {
        if ( element.childNodes[i].nodeName == tagName ) return element.childNodes[i];
      }
    }
</pre>
<p>A função percorre os nós filho do elemento até encontrar um nó correspondente a seu tagName. Em seguida, ele retorna o nó.</p>
<p>Leia mais sobre as propriedades childNodes e nodeName no artigo: <a href="http://www.elated.com/articles/looking-inside-dom-page-elements/" title="Looking inside DOM page elements" rel="external">Looking inside DOM page elements</a>.</p>
<h4>Função getHash()</h4>
<p>A função getHash() retorna parte da URL após encontrar qualquer símbolo hash(#). Usado por init() e showTab() para extrair o ID da div conteúdo relacionado com o link das tabs.</p>
<pre class="brush: javascript">
function getHash( url ) {
      var hashPos = url.lastIndexOf ( &#039;#&#039; );
      return url.substring( hashPos + 1 );
    }
</pre>
<h3>Todas as funções em conjunto</h3>
<p>Isso é tudo o que você precisa para desenvolver tabs com JavaScript. Veja a <a href="http://www.pinceladasdaweb.com.br/blog/uploads/javascript-tabs/" title="JavaScript Tabs sem Framework ou Plugin" rel="alternate">demonstração</a> e olhe o código fonte da página para ver como o HTML, CSS e JavaScript aparecem.</p>
<ul>
<li>O CSS e o JavaScript vão no topo da página. (Você pode colocá-los em arquivos separadados).</li>
<li>Elemento body da página que contém o manipulador de eventos onload para iniciar a função init().</li>
<li>O elemento ul que contém as tabs com os links.</li>
<li>Cada conteúdo da tab é armazenado em uma div com a classe tabContent e um id único (referenciado no link da aba correspondente).</li>
</ul>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2010/01/13/javascript-tabs-sem-framework-ou-plugin/">JavaScript Tabs sem Framework ou Plugin</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/" title="Coloque o jogo do Pac Man no seu site">Coloque o jogo do Pac Man no seu site</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/14/aprendendo-javascript/" title="Aprendendo JavaScript">Aprendendo JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/" title="As engines de JavaScript">As engines de JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/" title="CSS3 Selectors &#038; JavaScript &#8216;this&#8217;">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2010/01/13/javascript-tabs-sem-framework-ou-plugin/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>eCSStender: Assuma o controle do seu CSS</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2009/12/30/ecsstender-assuma-o-controle-do-seu-css/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2009/12/30/ecsstender-assuma-o-controle-do-seu-css/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 12:55:29 +0000</pubDate>
		<dc:creator>Walter Vieira</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=3632</guid>
		<description><![CDATA[Diga adeus aos códigos CSS cheios de hacks que em alguns casos acabam mais atrapalhando do que ajudando e projete seus códigos muito mais enxutos. Estou falando do eCSStender, com ele você pode usar seletores CSS avançados como border-radius e ter a certeza de que vai funcionar até no IE6. Acesse o site e descubra [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/12/30/ecsstender-assuma-o-controle-do-seu-css/">eCSStender: Assuma o controle do seu CSS</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<div class="aligncenter"><img src="http://www.kv2.com.br/pinceladasdaweb/Imagem1.png" alt="eCSStender" title="eCSStender" /></div>
<p>Diga adeus aos códigos CSS cheios de hacks que em alguns casos acabam mais atrapalhando do que ajudando e projete seus códigos muito mais enxutos.<br />
Estou falando do <a title="eCSStender" href="http://ecsstender.org" rel="external">eCSStender</a>, com ele você pode usar seletores CSS avançados como <strong>border-radius</strong> e ter a certeza de que vai funcionar até no IE6.</p>
<p>Acesse o site e descubra como esse framework maravilhoso pode facilitar sua vida.</p>
<p><strong>Link direto:</strong> <a rel="external" href="http://ecsstender.org/" title="eCSStender">http://ecsstender.org</a></p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/12/30/ecsstender-assuma-o-controle-do-seu-css/">eCSStender: Assuma o controle do seu CSS</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2009/05/13/colunas-com-alturas-iguais-com-javascript/" title="Colunas com alturas iguais com JavaScript">Colunas com alturas iguais com JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2009/05/01/ebook-gratis-de-jankoatwarpspeed-os-melhores-tutoriais/" title="Ebook grátis de JankoAtWarpSpeed: Os melhores tutoriais ">Ebook grátis de JankoAtWarpSpeed: Os melhores tutoriais </a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2008/12/02/24-ways-versao-2008/" title="24 ways: Versão 2008">24 ways: Versão 2008</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2008/11/18/seletores-css-com-jquery/" title="Seletores CSS com jQuery">Seletores CSS com jQuery</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2009/12/30/ecsstender-assuma-o-controle-do-seu-css/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Detectar Mobile Browsers em várias linguagens</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2009/12/09/detectar-mobile-browsers-em-varias-linguagens/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2009/12/09/detectar-mobile-browsers-em-varias-linguagens/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 10:14:25 +0000</pubDate>
		<dc:creator>Walter Vieira</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=3578</guid>
		<description><![CDATA[Dando continuidade ao post do Pedro Rogério sobre como Detectar Mobile Browsers com PHP, apresento mais uma opção que vai ajudar muito no desenvolvimento Mobile, o Detectmobilebrowser.com. Trata-se de uma ferramenta opensource de Mobile Phone Detection, que oferece suporte para as principais linguagens do mercado (PHP,Rails,Javascript,ASP,etc). É só escolher a linguagem desejada e baixar o [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/12/09/detectar-mobile-browsers-em-varias-linguagens/">Detectar Mobile Browsers em várias linguagens</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Dando continuidade ao post do <a href="http://www.pinceladasdaweb.com.br/blog/" title="Pinceladas da Web" rel="alternate">Pedro Rogério</a> sobre como <a title="Mobile" href="http://www.pinceladasdaweb.com.br/blog/2009/11/24/detectar-mobile-browsers-com-php/">Detectar Mobile Browsers com PHP</a>, apresento mais uma opção que vai ajudar muito no desenvolvimento Mobile, o <a title="http://detectmobilebrowser.com/" href="http://detectmobilebrowser.com/">Detectmobilebrowser.com</a>.</p>
<div class="aligncenter"><img src="http://www.kv2.com.br/pinceladasdaweb/mobile-browser.jpg" alt="Mobile Browser Detection" title="Mobile Browser Detection" /></div>
<p>Trata-se de uma ferramenta opensource de Mobile Phone Detection, que oferece suporte para as principais linguagens do mercado (PHP,Rails,Javascript,ASP,etc).</p>
<p>É só escolher a linguagem desejada e baixar o arquivo.</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/12/09/detectar-mobile-browsers-em-varias-linguagens/">Detectar Mobile Browsers em várias linguagens</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/04/08/mobile-user-experience-o-que-um-web-designer-precisa-saber/" title="Mobile User Experience: O que um Web Designer precisa saber">Mobile User Experience: O que um Web Designer precisa saber</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2009/11/24/detectar-mobile-browsers-com-php/" title="Detectar Mobile Browsers com PHP">Detectar Mobile Browsers com PHP</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2009/07/28/mobile-phone-development-tools/" title="Mobile Phone Development Tools">Mobile Phone Development Tools</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2008/12/08/primeiro-mobile-expert/" title="1º Mobile Expert">1º Mobile Expert</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2008/10/31/skyfire-browser-alternativo-para-windows-mobile/" title="Skyfire &#8211; Browser alternativo para Windows Mobile">Skyfire &#8211; Browser alternativo para Windows Mobile</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2009/12/09/detectar-mobile-browsers-em-varias-linguagens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quer ganhar um livro de JavaScript?</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2009/10/02/quer-ganhar-um-livro-de-javascript/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2009/10/02/quer-ganhar-um-livro-de-javascript/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 12:34:10 +0000</pubDate>
		<dc:creator>Pedro Rogério</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=3257</guid>
		<description><![CDATA[Fui convidado a um tempo atrás pela editora Bookman para fazer a avaliação do livro A Arte e a Ciência da CSS, um livro muito bom que traz soluções práticas para problemas mais corriqueiros do dia-a-dia. O livro tem foco no que você mais utiliza, como formulários, títulos, imagens, backgrounds, navegação. Se já não bastasse [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/10/02/quer-ganhar-um-livro-de-javascript/">Quer ganhar um livro de JavaScript?</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<div class="aligncenter"><a href="http://www.artmed.com.br/WEB-PRODUTOS/produto_detalhe.aspx?id_produto=2818" title="Só JavaScript" rel="external"><img src="http://www.pinceladasdaweb.com.br/blog/uploads/so-javascript.jpg" alt="Só JavaScript" title="Só JavaScript" /></a></div>
<p>Fui convidado a um tempo atrás pela editora <a href="http://www.bookman.com.br/" title="Bookman" rel="external">Bookman</a> para fazer a avaliação do livro <a href="http://www.artmed.com.br/WEB-PRODUTOS/produto_detalhe.aspx?id_produto=2786" title="A Arte e a Ciência da CSS" rel="external">A Arte e a Ciência da CSS</a>, um livro muito bom que traz soluções práticas para problemas mais corriqueiros do dia-a-dia. O livro tem foco no que você mais utiliza, como formulários, títulos, imagens, backgrounds, navegação.</p>
<p><span id="more-3257"></span></p>
<p>Se já não bastasse eu ter enviado o review do livro de CSS, fui chamado para fazer mais um, dessa vez do livro <a href="http://www.artmed.com.br/WEB-PRODUTOS/produto_detalhe.aspx?id_produto=2818" title="Só JavaScript" rel="external">Só JavaScript</a>. Esse livro é ideal para iniciantes, e para aqueles que também já trabalham com JavaScript, pois com ele você aprenderá a programar da forma correta.</p>
<p>Eles explicam muito bem eventos, validação de formulários, entre outras coisas essenciais para programar em JavaScript. Ao decorrer do livro, você vai montando sua própria biblioteca, inclusive com a possibilidade de criar animações via JavaScript. Ficou interessado no livro? Eu possuo um exemplar para sortear aqui no blog e o sorteio funciona da seguinte forma:</p>
<p>O primeiro que enviar um Tweet para a <a href="http://twitter.com/bookmaneditora" title="Twitter da Editora Bookman" rel="external">Editora Bookman</a> dizendo que lê o meu blog e quer o livro ganha o mesmo. Muito simples não, só basta ser rápido.</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/10/02/quer-ganhar-um-livro-de-javascript/">Quer ganhar um livro de JavaScript?</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/" title="Coloque o jogo do Pac Man no seu site">Coloque o jogo do Pac Man no seu site</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/14/aprendendo-javascript/" title="Aprendendo JavaScript">Aprendendo JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/" title="As engines de JavaScript">As engines de JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/" title="CSS3 Selectors &#038; JavaScript &#8216;this&#8217;">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2009/10/02/quer-ganhar-um-livro-de-javascript/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Os Temporizadores do JavaScript</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2009/09/01/os-temporizadores-do-javascript/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2009/09/01/os-temporizadores-do-javascript/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 11:30:31 +0000</pubDate>
		<dc:creator>Jeronimo Fagundes</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=2987</guid>
		<description><![CDATA[JavaScript tem duas funções muito úteis que servem para "agendar tarefas" que devam ser executadas. São elas o setTimeout e o setInterval.<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/09/01/os-temporizadores-do-javascript/">Os Temporizadores do JavaScript</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<p>JavaScript tem duas funções muito úteis que servem para &#8220;agendar tarefas&#8221; que devam ser executadas. São elas o <em>setTimeout</em> e o <em>setInterval</em>.</p>
<p>O <em>setTimeout</em> tem dois parâmetros; o primeiro é uma string contendo o código a ser executado. O segundo é o tempo, em milissegundos, que se deve esperar para executar tal código. O seguinte trecho de código mostrará um alerta após 2000 milissegundos (ou seja, 2 segundos).</p>
<pre class="brush: javascript">
setTimeout(&quot;alert(&#039;Viva!&#039;)&quot;, 2000);
</pre>
<p>A diferença entre <em>setTimeout</em> e <em>setInterval</em> é que o setTimeout executa o código especificado apenas uma vez. O setInterval executa infinitas vezes, com o intervalo de tempo especificado entre cada execução. Por exemplo, o seguinte código exibirá um alerta a cada 10 segundos.</p>
<pre class="brush: javascript">
setInterval(&quot;alert(&#039;Viva!&#039;)&quot;, 10000);
</pre>
<p><span id="more-2987"></span></p>
<p>Você pode se arrepender de ter agendado a execução do código. Nesse caso, são necessárias duas coisas: ter guardado a tarefa numa variável, e usar a função de cancelamento de execução. São duas as funções de cancelamento: <em>clearTimeout</em>, para cancelar as tarefas agendadas com setTimeout, e <em>clearInterval</em>, que cancela as agendadas com setInterval.<br />
Por exemplo, o código abaixo <em>não</em> mostrará alerta algum, pois as tarefas agendadas serão canceladas.</p>
<pre class="brush: javascript">
var alerta_unico = setTimeout(&quot;alert(&#039;Viva!&#039;)&quot;, 5000);
var alerta_intermitente = setInterval(&quot;alert(&#039;Viva!&#039;)&quot;, 10000);

clearTimeout(alerta_unico); // Cancela o alerta agendado em setTimeout
clearInterval(alerta_intermitente); // Cancela o alerta agendado em setInterval
</pre>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/09/01/os-temporizadores-do-javascript/">Os Temporizadores do JavaScript</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/" title="Coloque o jogo do Pac Man no seu site">Coloque o jogo do Pac Man no seu site</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/14/aprendendo-javascript/" title="Aprendendo JavaScript">Aprendendo JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/" title="As engines de JavaScript">As engines de JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/" title="CSS3 Selectors &#038; JavaScript &#8216;this&#8217;">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2009/09/01/os-temporizadores-do-javascript/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>JavaScript &#8211; Uma String é um Array de Caracteres?</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2009/07/10/javascript-uma-string-e-um-array-de-caracteres/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2009/07/10/javascript-uma-string-e-um-array-de-caracteres/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 13:28:42 +0000</pubDate>
		<dc:creator>Jeronimo Fagundes</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Browsers]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=2674</guid>
		<description><![CDATA[Acessar um determinado caracter de uma string como se fosse um array é comum. Mas parece que a Microsoft não compartilha dessa visão. <p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/07/10/javascript-uma-string-e-um-array-de-caracteres/">JavaScript &#8211; Uma String é um Array de Caracteres?</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Algo bastante comum em qualquer linguagem de programação é querer acessar um determinado caracter de uma string. Geralmente fazemos isso tratando a string como se fosse um array, ou seja, sendo <em>str</em> a nossa variável que contém a string, bastaria fazer um <em>str[4]</em> pra acessar o quinto caracter da string, por exemplo.</p>
<p>Em JavaScript não deveria ser diferente. Você faz isso, testa no seu Firefox cheio de extensões (ou até mesmo em safe-mode), e tudo funciona. O seu cliente abre a página, e nos primeiros dez segundos ele diz que não funciona. Provavelmente seu cliente está usando o Internet Explorer.</p>
<p>Acessar um caracter específico de uma string em JavaScript como se fosse um array não funciona no IE. Por exemplo, se temos isso:</p>
<pre class="brush: javascript">
var str = &quot;abcdef&quot;;
alert(str[4]);
</pre>
<p>No Firefox será alertado corretamente a letra &#8220;e&#8221;. No Internet Explorer, será alertado &#8220;undefined&#8221;. Assim, o recomendado é acessar um caracter específico com a função <em>charAt</em>, da classe String. Desse modo, o código ficaria assim:</p>
<pre class="brush: javascript">
var str = &quot;abcdef&quot;;
alert(str.charAt(4));
</pre>
<p>E isso funciona em ambos os browsers.</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/07/10/javascript-uma-string-e-um-array-de-caracteres/">JavaScript &#8211; Uma String é um Array de Caracteres?</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2008/01/24/debugbar-firebug-para-internet-explorer/" title="Debugbar &#8211; Firebug para Internet Explorer">Debugbar &#8211; Firebug para Internet Explorer</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/" title="Coloque o jogo do Pac Man no seu site">Coloque o jogo do Pac Man no seu site</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/14/aprendendo-javascript/" title="Aprendendo JavaScript">Aprendendo JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/" title="As engines de JavaScript">As engines de JavaScript</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2009/07/10/javascript-uma-string-e-um-array-de-caracteres/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Javascript &#8211; Último dia do mês</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2009/07/07/javascript-ultimo-dia-do-mes/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2009/07/07/javascript-ultimo-dia-do-mes/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 11:28:54 +0000</pubDate>
		<dc:creator>Luiz Paulo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=2629</guid>
		<description><![CDATA[Essa semana, eu precisei de uma solução em Javascript para encontrar o &#8220;último dia do mês&#8221; ou &#8220;quantidade de dias do mês&#8221; como preferir. Consultei o Google e encontrei algumas soluções, algumas delas mais simples e outras bem criativas. Achei o assunto interessante e resolvi divulgar aqui para quem precisar utilizar. Primeiro vou postar as [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/07/07/javascript-ultimo-dia-do-mes/">Javascript &#8211; Último dia do mês</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Essa semana, eu precisei de uma solução em Javascript para encontrar o &#8220;último dia do mês&#8221; ou &#8220;quantidade de dias do mês&#8221; <em>como preferir</em>. Consultei o Google e encontrei algumas soluções, algumas delas mais simples e outras bem criativas.</p>
<p>Achei o assunto interessante e resolvi divulgar aqui para quem precisar utilizar.</p>
<p>Primeiro vou postar as soluções sérias para o pessoal que está pesquisando e precisa utilizar em seu código</p>
<h3>Soluções simples</h3>
<p><strong>Exemplo longo (função):</strong></p>
<pre class="brush: javascript">
function daysInMonth(month,year) {
	var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	if (month != 2) return m[month - 1];
	if (year % 4 != 0) return m[1];
	if (year % 100 == 0 &amp;amp;&amp;amp; year%400 != 0) return m[1];

	return m[1] + 1;
}
</pre>
<p><span id="more-2629"></span><br />
<strong>Exemplo curto (função):</strong><br />
Aqui está a grande sacada do javaScript, que interpreta o 0(zero) como &#8220;o dia antes do dia primeiro&#8221; que obviamente é o último dia do mês anterior.</p>
<pre class="brush: javascript">
function daysInMonth(month,year) {
	var dd = new Date(year, month, 0);
	return dd.getDate();
}
</pre>
<p><strong>Exemplo curto (inline):</strong></p>
<pre class="brush: javascript">
var lastDay = (new Date(year, month, 0)).getDate();
</pre>
<h3>Soluções criativas</h3>
<p>Não se assustem, mas as soluções citadas abaixo funcionam!</p>
<p><strong>Solução utilizando Switch:</strong></p>
<pre class="brush: javascript">
function getLastDayOfMonth(month,year)
{
	var day;

	switch(month)
	{
		case 1 :
		case 3 :
		case 5 :
		case 7 :
		case 8 :
		case 10:
		case 12:
			day = 31;
			break;
		case 4 :
		case 6 :
		case 9 :
		case 11:
		   	day = 30;
			break;
		case 2 :
			if( ( (year % 4 == 0) &amp;amp;&amp;amp; ( year % 100 != 0) ) || (year % 400 == 0) )
				day = 29;
			else
				day = 28;
			break;

	}
	return day;
}
</pre>
<p><strong>Essa é legal</strong></p>
<pre class="brush: javascript">
function anoBissexto(anoCompleto)
{
	if(!(anoCompleto%4) &amp;amp;&amp;amp; (anoCompleto%100 || !(anoCompleto%400))) return true;
	return false;
}
function diasNoMes(mes,ano)
{
	var var_type=typeof mes;
	if(var_type != &quot;number&quot; &amp;amp;&amp;amp; var_type != &quot;string&quot;) return false;
	if(var_type == &quot;number&quot; &amp;amp;&amp;amp; (mes &gt; 11 || mes =0) return dias[indice_eng];
		if(indice_bra&gt;=0) return dias[indice_bra];
		return false;
	}
	else return dias[mes];
}
</pre>
<p>Façam bom proveito!</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/07/07/javascript-ultimo-dia-do-mes/">Javascript &#8211; Último dia do mês</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/" title="Coloque o jogo do Pac Man no seu site">Coloque o jogo do Pac Man no seu site</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/14/aprendendo-javascript/" title="Aprendendo JavaScript">Aprendendo JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/" title="As engines de JavaScript">As engines de JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/" title="CSS3 Selectors &#038; JavaScript &#8216;this&#8217;">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2009/07/07/javascript-ultimo-dia-do-mes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Javascript &#8211; Retirando espaços de string (função trim)</title>
		<link>http://www.pinceladasdaweb.com.br/blog/2009/06/29/javascript-retirando-espacos-de-string-funcao-trim/</link>
		<comments>http://www.pinceladasdaweb.com.br/blog/2009/06/29/javascript-retirando-espacos-de-string-funcao-trim/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 11:05:26 +0000</pubDate>
		<dc:creator>Luiz Paulo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.pinceladasdaweb.com.br/blog/?p=2562</guid>
		<description><![CDATA[Veja abaixo algumas soluções para retirar espaços do início e final de strings. Exemplos simples Exemplo curto (funções com expressão regular): //trim completo function trim(str) { return str.replace(/^\s+&#124;\s+$/g,&#34;&#34;); } //left trim function ltrim(str) { return str.replace(/^\s+/,&#34;&#34;); } //right trim function rtrim(str) { return str.replace(/\s+$/,&#34;&#34;); } alert(trim(&#34; TEXTO &#34;)); Exemplo curto (métodos da string com expressão [...]<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/06/29/javascript-retirando-espacos-de-string-funcao-trim/">Javascript &#8211; Retirando espaços de string (função trim)</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Veja abaixo algumas soluções para retirar espaços do início e final de strings.</p>
<h3>Exemplos simples</h3>
<p><strong>Exemplo curto (funções com expressão regular):</strong></p>
<pre class="brush: javascript">
	//trim completo
	function trim(str) {
		return str.replace(/^\s+|\s+$/g,&quot;&quot;);
	}

	//left trim
	function ltrim(str) {
		return str.replace(/^\s+/,&quot;&quot;);
	}

	//right trim
	function rtrim(str) {
		return str.replace(/\s+$/,&quot;&quot;);
	}

	alert(trim(&quot;        TEXTO        &quot;));
</pre>
<p><strong>Exemplo curto (métodos da string com expressão regular):</strong><br />
Essa solução é bem mais elegante!</p>
<pre class="brush: javascript">
	//trim completo
	String.prototype.trim = function () {
		return this.replace(/^\s+|\s+$/g,&quot;&quot;);
	}

	//left trim
	String.prototype.ltrim = function () {
		return this.replace(/^\s+/,&quot;&quot;);
	}

	//right trim
	String.prototype.rtrim = function () {
		return this.replace(/\s+$/,&quot;&quot;);
	}
	alert(&quot;        TEXTO        &quot;.trim());
</pre>
<p><span id="more-2562"></span></p>
<h3>Outras soluções</h3>
<p><strong>Exemplo longo</strong></p>
<pre class="brush: javascript">
function trim (str)
	{
		var whitespace = &#039; \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000&#039;;
		for (var i = 0; i = 0; i--)
		{
			if (whitespace.indexOf(str.charAt(i)) == -1)
			{
				str = str.substring(0, i + 1);
				break;
			}
		}
	    return whitespace.indexOf(str.charAt(0)) == -1 ? str : &#039;&#039;;
	}
</pre>
<p><strong>Outro exemplo</strong></p>
<pre class="brush: javascript">
	function isWhitespace(charToCheck) {
		var whitespaceChars = &quot; \t\n\r\f&quot;;
		return (whitespaceChars.indexOf(charToCheck) != -1);
	}

	//left trim
	function ltrim(str) {
		for(var k = 0; k =0 &amp;&amp; isWhitespace(str.charAt(j)) ; j--) ;
		return str.substring(0,j+1);
	}

	//trim completo
	function trim(str) {
		return ltrim(rtrim(str));
	}
</pre>
<p>Caso queira se aprofundar no assunto, aconselho a leitura do artigo <a href="http://blog.stevenlevithan.com/archives/faster-trim-javascript" title="Faster JavaScript Trim" rel="external">Faster JavaScript Trim</a> que mostra vários testes de performance no IE e FF.</p>
<p><hr />
<a href="http://www.pinceladasdaweb.com.br/blog/2009/06/29/javascript-retirando-espacos-de-string-funcao-trim/">Javascript &#8211; Retirando espaços de string (função trim)</a>
<br />
<p>J&aacute; conhece o meu outro blog? O endere&ccedil;o &eacute; o: <a href="http://www.cssnolanche.com.br">CSS no Lanche</a></p>
<p>Voc&ecirc; ainda n&atilde;o est&aacute; me seguindo no <a href="http://twitter.com/pinceladasdaweb" title="Siga-me no Twitter" rel="external">Twitter</a>, o que est&aacute; esperando para fazer isso?</p></p>
<ul class="related_post"><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/08/20/livros-com-20-de-desconto-na-editora-novatec/" title="Livros com 20% de desconto na Editora Novatec">Livros com 20% de desconto na Editora Novatec</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/24/coloque-o-jogo-do-pac-man-no-seu-site/" title="Coloque o jogo do Pac Man no seu site">Coloque o jogo do Pac Man no seu site</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/05/14/aprendendo-javascript/" title="Aprendendo JavaScript">Aprendendo JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/04/05/as-engines-de-javascript/" title="As engines de JavaScript">As engines de JavaScript</a></li><li><a href="http://www.pinceladasdaweb.com.br/blog/2010/03/31/css3-selectors-e-javascript-this/" title="CSS3 Selectors &#038; JavaScript &#8216;this&#8217;">CSS3 Selectors &#038; JavaScript &#8216;this&#8217;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.pinceladasdaweb.com.br/blog/2009/06/29/javascript-retirando-espacos-de-string-funcao-trim/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
